new icn messageflickr-free-ic3d pan white

Drag to set position!

Security BSides London

1 3 4 5 6 7 ••• 11 12
#####EOF##### Flickr Help
#####EOF##### Flickr Blog

Painting with Light

English photographer Tim Gamble has always liked things that are different. His interest in light painting—a form of long exposure photography that creates colorful images by moving a hand-held light source—started seven years ago, when he came across a tiny section dedicated to the art of light drawing in his newly-purchased digital photography book.

#####EOF##### Flickr Blog

Painting with Light

English photographer Tim Gamble has always liked things that are different. His interest in light painting—a form of long exposure photography that creates colorful images by moving a hand-held light source—started seven years ago, when he came across a tiny section dedicated to the art of light drawing in his newly-purchased digital photography book.

#####EOF##### Security BSides London | Flickr new icn messageflickr-free-ic3d pan white

Drag to set position!

Security BSides London

1 3 4 5 6 7 ••• 11 12
#####EOF##### Top Tag Tuesday | Flickr Blog

Top Tag Tuesday

It’s Top Tag Tuesday once again and that means we’ve highlighted some of the best photos for each of the top-five trending tags on Flickr this week!

THE SPACE IN BETWEEN
As every Monday, the theme for this week’s macro challenge, ‘The Space in Between,’ is trending on Flickr. The Macro Mondays Group asked Flickr photographers to capture some of the most interesting things they could find in between two objects and make that the focal point of their images.

In Between
In Between
Flower In Between Buds

NATUR
As you’ve probably guessed, ‘Natur’ is the German word for ‘nature.’ As the spring season approaches, Flickr photographers are heading outside to take pictures of blooming flowers, full rivers, warmer sunrises and other signs of early Spring.

After a rain shower in the morning
Schneeglöckchen
Landschaft

RURAL
What better place for capturing nature at its best than a rural landscape? Small towns and farms are surely great places to stare at the sky, breath some fresh air, and ruminate on life’s important details.

The Lone Tree....
Pasture
Corner Light

ESPAÑA
It’s Carnival season in Spain and that may be the reason why ‘España’ is a trending tag this week. Spaniards know how to celebrate every occasion properly and carnivals are no exception. From South to North, Spain celebrates this unique festivity with different fiestas across the country and the photographers are using their country tag to represent!

Cadiz 71365
Cadiz 71635
The teenage witch

WEATHER
We can’t deny our excitement for the upcoming season. For the most part, Flickr is saying ‘goodbye’ to Winter and ‘hello’ to Spring with some rocking pictures of rainbows, melting snow, and hailstorms.

Double Rainbow
Sunday Storm
Unsettled Bronte
#####EOF##### The Commons: The Past Is 100% Part of Our Future | Flickr Blog

The Commons: The Past Is 100% Part of Our Future

A Grazing Encounter Between Two Spiral Galaxies

On November 1, 2018, we announced how we’d begin bringing Flickr back to its roots: an active, photo-sharing community. This meant upgrading our Pro accounts and changing Free accounts to encourage photographers to use Flickr again for interaction and inspiration and not just for backup storage. A big part of that inspiration comes from those of you who have shared your photography with Creative Commons licensing. And from historical, governmental, and nonprofit organizations that have shared amazing photos via The Flickr Commons. Those photos, and your ability to share them, are important to us. That hasn’t changed.

Those photos aren’t going anywhere. To understand what does change, though, we first need to understand what The Flickr Commons and Creative Commons are.

Ship Garthsnaid, ca 1920s

The Commons Difference

The Flickr Commons is for photos that come from institutions that want to share their digital collections with as many people around the world as they can. These tend to be historical images whose copyright has expired or government images that are automatically in the public domain since taxpayers have technically already paid for them.

Photos from NASA, The Smithsonian, The National Archives UK, and The British Library, for example, have been shared in The Flickr Commons. As part of The Flickr Commons, all these organizations already were Pro or have received a free Pro account from us, so they have unlimited storage.

The Creative Commons (CC) organization has developed a suite of licenses that give individual photographers or groups great tools for licensing their photography for others to freely use. The photographer keeps their copyright and gives the public an easy way to use their images as long as the license terms are followed.

The Flickr Commons and Creative Commons are different, thus our storage changes affect each differently (or not at all).

The Big Three at Yalta

Are Commons Photos Being Deleted?

No. And once more for good measure: no, Commons photos are not being deleted.

The Flickr Commons photos (those uploaded by the archival, governmental, etc. institutions we are working with) are safe. We are extremely proud of these partnerships. These photos won’t be deleted as a result of any of our announced changes. The only reason they’d disappear is if the organization that uploaded them decided to delete them.

Photos that were Creative Commons licensed before our announcement are also safe. We won’t be deleting anything that was uploaded with a CC license before November 1, 2018. Even if you had more than 1,000 photos or videos with a CC license. However, if you do have more than 1,000 photos or videos uploaded, you’ll be unable to upload additional photos after January 8, 2019, unless you upgrade to a Pro account.

Bottom line: Flickr Commons photos will not be deleted. Anything uploaded with a CC license before November 1, 2018, won’t be deleted, but users will need to upgrade to Pro to upload more than 1,000 photos or videos.

Ice cased Adelie penguins after a blizzard at Cape Denison / photograph by Frank Hurley

What About Non-Profits?

We know and understand that there are groups out there that work hard to scrape together every nickel and dime to run their organization. And we want to help remove any stress that may come from finding a place to host photos. We’ve worked with 501(c)(3) charitable organizations for years at SmugMug to provide them with unlimited, free storage, and we’ll be doing the same at Flickr.

Organizations such as the United Nations Children’s Fund (UNICEF), 350.org, and Second Harvest are already using Flickr to share photos of the amazing work they do. And now we’ll be working with them to ensure Pro isn’t a cost they need to worry about.

In fact, you can fill out the form from this page with information about your 501(c)(3) organization or international charity, and we’ll work with you to get your free Pro account set up.

The Future of the Commons

Freely licensed photos are deeply important to us. After SmugMug acquired Flickr, one of the first meetings we had was with Ryan Merkley, the CEO of Creative Commons. We want to keep that partnership alive and strong, and we are actively working on how to grow it for the future.

“We’ll be working with Flickr to look for ways to continue growing and archiving the commons,” Merkley said. “When Flickr users apply CC licenses to their works, they are inviting everyone to use their works freely and with very few restrictions. That’s an incredible gift to the world, and that generosity should be acknowledged and preserved into perpetuity for everyone to enjoy.”

Whatever changes come in the years going forward, the importance of these photos will always matter to us. We not only want to preserve the photos we have, we want to keep partnering with organizations such as libraries, museums, and government agencies to contribute to The Flickr Commons as well. And we will continue to work hard to keep these photos safe and available for the world to view and enjoy.

Destitute pea pickers in California. Mother of seven children. Age thirty-two. Nipomo, California (LOC)
#####EOF##### theweeklyflickr | Flickr Blog

Photographer Finds Inspiration in Everyday Encounters

Street photographer Dijon Bowden may have started as a filmmaker, but when he began the photography project titled Souls of San Francisco, he quickly knew he had found his true calling. Although pictures are his medium, Dijon primarily sees himself forging connections with people that his camera simply makes possible.

Extreme photos at extreme heights

For seven years, Emily Ibarra has traveled the world photographing the death-defying adventures of professional parkour and freerunning athletes. Captured at sites ranging from the Grand Canyon to the Far East, her photos reveal their fearless exploits as they scale skyscrapers, fly across rooftops, and banish fear in precarious poses. Emily loves her job. “It’s exciting. It’s terrifying, and it’s dangerous, and I get to capture that,” she gushes.

Photography as Art Therapy

Photographer Katie Eleanor began cultivating imaginary friends and dream worlds at a young age, and rather than discarding these dreamscapes in her teen years, she took up photography as a way of bringing them to life. When Katie found herself facing mental illness in her early 20s, she drew from the well of inspiration in her work to find healing.

Baltimore Riots: The story behind TIME’s iconic cover

Devin Allen grew up in west Baltimore surrounded by crime, drugs, and murder. Photography offered him not only a means of rediscovering his community’s beauty, but also literally saved his life. Still, he never dreamed that one of his photos would land him on the cover of Time magazine.

#####EOF##### Photography and Licensing: Q&A with Creative Commons CEO Ryan Merkley | Flickr Blog

Photography and Licensing: Q&A with Creative Commons CEO Ryan Merkley

Since 2004, Flickr has been a proud supporter of Creative Commons, a licensing system that gives photographers and creators the ability to share and distribute their works on conditions of their choice. Today, people can find hundreds of millions of public images released under Creative Commons licenses on our site; we have the honor of being the largest repository of openly licensed works online.

The significance of this massive collection of creative works will always matter to us— and that’s why Flickr continues to work with Creative Commons on ways to cultivate and grow this long-term partnership. We recently met with Ryan Merkley, CEO of Creative Commons, to talk about common goals, reflect on the history of our communities, and discuss future challenges and opportunities. The following is an edited transcript of our conversation.

Creative-Commons-CEO-Interview-5

Why is it important for photography platforms like Flickr to support Creative Commons (CC) licenses?

Merkley: Because photographers want it. If you want to be a platform that gives its users choice, then CC is the most reliable standard for sharing your work under permissive terms. “All Rights Reserved” is the default for every photo from the second it’s taken, but a considerable portion of users and creators want to share, and a CC license gives them the opportunity to do that.

Allowing CC licenses has helped Flickr grow as a community, to the point that we’ve become the largest repository of CC-licensed images. How has the CC community benefited from Flickr’s support?

Merkley: A for-profit company [Flickr] every month spends hundreds of thousands of dollars on bandwidth and storage in order to make these images available to every person who wants them, under these terms. That’s a huge gift to the Commons, to history, to the community, to humanity.

Flickr is one of the most, if not the most, important collections of Creative Commons works online. If we lost that, we’d have to move it somewhere and build a platform that could host it, and serve it up in some other way. That infrastructure is really important. We’ve come to see Flickr as part of the infrastructure of the web, not just a service. It’s part of the core of what we think of as the “open web.”

Why do you think so many people choose Flickr for sharing and accessing Creative Commons images?

Merkley: I think a huge part of the goodwill that exists for Flickr is tied to this notion that it was built around the ideals of sharing and bringing communities together, so it was more than just a photo platform.

Wikipedia and Flickr are part of this old web that people still love, and it’s one of the few for-profit companies that has been able to hold those values through sell after sell. That says something about the people that work at Flickr, about the people who purchased Flickr, about the community that stayed with Flickr.

Flickr takes copyright very seriously, but we believe creators should have the choice to decide the type of license and conditions they wish to apply to their work. What would you say to photographers who criticize the Creative Commons because they think it creates a body of work that competes with their ability to make money?

Merkley: Creative Commons was designed to give authors and creators choice. In an environment where copyright is the default, every creator has to choose to share or not to share.

If a photographer makes a work and they don’t want to share it, they shouldn’t. Creative Commons is not going to come and take their work from them; we never would. We made a set of licenses with different permissions because some photographers were willing to share and only wanted credit, and other photographers were willing to share but also wanted to make sure that they were the only ones who could profit commercially.

Creative-Commons-CEO-Interview-6

Do you believe photographers have a good general understanding of the different types of CC licenses they can apply to their work, and the implications of choosing one of these licenses?

Merkley: I think photographers, more than most creators, have a pretty good grip on their copyright. I think there are nuances of the licenses people don’t quite get. People understand that CC-BY means that “I must give credit,” but they probably get stuck on “what does ‘give credit’ mean?”

A piece of the licenses requires some goodwill and good actors, and when you have bad actors, then people need to work it out. But I can say that over seventeen years of the life of Creative Commons, two things have been consistent: when the licenses are under scrutiny and they go to court, the license terms hold up and the rights of creators are upheld. The number of cases where that’s happened is very few because, most often, people work it out.

The licenses were not supposed to be a big hammer that you hit people with; they’re supposed to enable collaboration.

We often see examples of people, including journalists, who forget to give proper attribution to the photographer, or give attribution to the platform instead. What has CC done over the years to help creators understand the benefits of using an open license and to educate the public on how to properly attribute and use those CC-licensed works?

Merkley: We provide educational materials. We go meet with our partners and do videos in their offices and talk to them about how to do this. In our own products, we’re building a service called CC Search. The idea is to collect all the works of the Commons and provide front-door access to them. We’ve built one-click attribution as well.

Where I’d like to get to is a place where attribution is automatic so that the user doesn’t have to do anything.

Can you tell us more about the Creative Commons Search initiative?

Merkley: CC Search, when it’s completed, will be a collection of the catalog of the Commons online—so 1.4 billion licensed works across 9 million different websites, from Flickr, Wikipedia, Youtube…all the way down to someone’s individual blog. I don’t think we’ll ever get everything, but the idea is to collect the majority of that in a catalog that refers to the various places where those works are located.

The European Parliament has recently voted in favor of the Copyright Directive, which includes the controversial “link tax” and “upload filter,” two proposals you’ve publicly criticized. How do you think this directive would affect creators and platforms like Flickr if given final approval in January?

Merkley: The link tax gives a right to publishers to link to their sites and was designed around journalism businesses’ frustration over Google News, based on an assumption that if they can make money out of those links that Google News offers, they would somehow be viable again.

Unfortunately, we’ve already seen both in Germany and Spain that making laws like that has failed. When, in Spain, Google News shut down their service in response to the restrictions imposed by the government, news websites saw their traffic drop drastically overnight. So whatever advertising those sites were getting from traffic vanished.

The other policy that they would bring in is the upload filtering, which would require every piece of content uploaded to be filtered prior to it being posted. This is meant to deal with what its proponents described as “rampant copyright infringement.” Our sense is that what it mostly does is lock out new players because, in order to do that kind of filtering, you would require AI filters or huge armies of people.

That probably means that only the companies that can afford those filters will have them. And the only companies that have those filters right now are Google and Facebook.

Creative-Commons-CEO-Interview-4

Though we know there will always be new challenges like those proposed by the European Parliament, we at Flickr will continue to work together with Creative Commons to provide photographers with a safe place to share their photos—however they choose. The landscape of sharing online will continue to change, and we’ll continue to adapt and collaborate in order to protect this repository of amazing images.

#####EOF##### Soldat in der Gesellschaft | Ein Oberleutnant der Luftwaffe … | Flickr new icn messageflickr-free-ic3d pan white
Soldat in der Gesellschaft | by Offizieller Auftritt der Bundeswehr
#####EOF##### code.flickr.com

Together

Flickr is excited to be joining SmugMug!

We’re looking forward to some interesting and challenging engineering projects in the next year, and would love to have more great people join the team!

We want to talk to people who are interested in working on an inclusive, diverse team, building large-scale systems that are backing a much-loved product.

You can reach us by email at: iwanttowork@flickr.com

Read our announcement blog post and our extended Q&A for more details.

~The Flickr Team

Introducing Similarity Search at Flickr

At Flickr, we understand that the value in our image corpus is only unlocked when our members can find photos and photographers that inspire them, so we strive to enable the discovery and appreciation of new photos.

To further that effort, today we are introducing similarity search on Flickr. If you hover over a photo on a search result page, you will reveal a “…” button that exposes a menu that gives you the option to search for photos similar to the photo you are currently viewing.

In many ways, photo search is very different from traditional web or text search. First, the goal of web search is usually to satisfy a particular information need, while with photo search the goal is often one of discovery; as such, it should be delightful as well as functional. We have taken this to heart throughout Flickr. For instance, our color search feature, which allows filtering by color scheme, and our style filters, which allow filtering by styles such as “minimalist” or “patterns,” encourage exploration. Second, in traditional web search, the goal is usually to match documents to a set of keywords in the query. That is, the query is in the same modality—text—as the documents being searched. Photo search usually matches across modalities: text to image. Text querying is a necessary feature of a photo search engine, but, as the saying goes, a picture is worth a thousand words. And beyond saving people the effort of so much typing, many visual concepts genuinely defy accurate description. Now, we’re giving our community a way to easily explore those visual concepts with the “…” button, a feature we call the similarity pivot.

The similarity pivot is a significant addition to the Flickr experience because it offers our community an entirely new way to explore and discover the billions of incredible photos and millions of incredible photographers on Flickr. It allows people to look for images of a particular style, it gives people a view into universal behaviors, and even when it “messes up,” it can force people to look at the unexpected commonalities and oddities of our visual world with a fresh perspective.

What is “similarity”?

To understand how an experience like this is powered, we first need to understand what we mean by “similarity.” There are many ways photos can be similar to one another. Consider some examples.

It is apparent that all of these groups of photos illustrate some notion of “similarity,” but each is different. Roughly, they are: similarity of color, similarity of texture, and similarity of semantic category. And there are many others that you might imagine as well.

What notion of similarity is best suited for a site like Flickr? Ideally, we’d like to be able to capture multiple types of similarity, but we decided early on that semantic similarity—similarity based on the semantic content of the photos—was vital to facilitate discovery on Flickr. This requires a deep understanding of image content for which we employ deep neural networks.

We have been using deep neural networks at Flickr for a while for various tasks such as object recognition, NSFW prediction, and even prediction of aesthetic quality. For these tasks, we train a neural network to map the raw pixels of a photo into a set of relevant tags, as illustrated below.

Internally, the neural network accomplishes this mapping incrementally by applying a series of transformations to the image, which can be thought of as a vector of numbers corresponding to the pixel intensities. Each transformation in the series produces another vector, which is in turn the input to the next transformation, until finally we have a vector that we specifically constrain to be a list of probabilities for each class we are trying to recognize in the image. To be able to go from raw pixels to a semantic label like “hot air balloon,” the network discards lots of information about the image, including information about  appearance, such as the color of the balloon, its relative position in the sky, etc. Instead, we can extract an internal vector in the network before the final output.

For common neural network architectures, this vector—which we call a “feature vector”—has many hundreds or thousands of dimensions. We can’t necessarily say with certainty that any one of these dimensions means something in particular as we could at the final network output, whose dimensions correspond to tag probabilities. But these vectors have an important property: when you compute the Euclidean distance between these vectors, images containing similar content will tend to have feature vectors closer together than images containing dissimilar content. You can think of this as a way that the network has learned to organize information present in the image so that it can output the required class prediction. This is exactly what we are looking for: Euclidian distance in this high-dimensional feature space is a measure of semantic similarity. The graphic below illustrates this idea: points in the neighborhood around the query image are semantically similar to the query image, whereas points in neighborhoods further away are not.

This measure of similarity is not perfect and cannot capture all possible notions of similarity—it will be constrained by the particular task the network was trained to perform, i.e., scene recognition. However, it is effective for our purposes, and, importantly, it contains information beyond merely the semantic content of the image, such as appearance, composition, and texture. Most importantly, it gives us a simple algorithm for finding visually similar photos: compute the distance in the feature space of a query image to each index image and return the images with lowest distance. Of course, there is much more work to do to make this idea work for billions of images.

Large-scale approximate nearest neighbor search

With an index as large as Flickr’s, computing distances exhaustively for each query is intractable. Additionally, storing a high-dimensional floating point feature vector for each of billions of images takes a large amount of disk space and poses even more difficulty if these features need to be in memory for fast ranking. To solve these two issues, we adopt a state-of-the-art approximate nearest neighbor algorithm called Locally Optimized Product Quantization (LOPQ).

To understand LOPQ, it is useful to first look at a simple strategy. Rather than ranking all vectors in the index, we can first filter a set of good candidates and only do expensive distance computations on them. For example, we can use an algorithm like k-means to cluster our index vectors, find the cluster to which each vector is assigned, and index the corresponding cluster id for each vector. At query time, we find the cluster that the query vector is assigned to and fetch the items that belong to the same cluster from the index. We can even expand this set if we like by fetching items from the next nearest cluster.

This idea will take us far, but not far enough for a billions-scale index. For example, with 1 billion photos, we need 1 million clusters so that each cluster contains an average of 1000 photos. At query time, we will have to compute the distance from the query to each of these 1 million cluster centroids in order to find the nearest clusters. This is quite a lot. We can do better, however, if we instead split our vectors in half by dimension and cluster each half separately. In this scheme, each vector will be assigned to a pair of cluster ids, one for each half of the vector. If we choose k = 1000 to cluster both halves, we have k2= 1000 * 1000 = 1e6 possible pairs. In other words, by clustering each half separately and assigning each item a pair of cluster ids, we can get the same granularity of partitioning (1 million clusters total) with only 2 * 1000 distance computations with half the number of dimensions for a total computational savings of 1000x. Conversely, for the same computational cost, we gain a factor of k more partitions of the data space, providing a much finer-grained index.

This idea of splitting vectors into subvectors and clustering each split separately is called product quantization. When we use this idea to index a dataset it is called the inverted multi-index, and it forms the basis for fast candidate retrieval in our similarity index. Typically the distribution of points over the clusters in a multi-index will be unbalanced as compared to a standard k-means index, but this unbalance is a fair trade for the much higher resolution partitioning that it buys us. In fact, a multi-index will only be balanced across clusters if the two halves of the vectors are perfectly statistically independent. This is not the case in most real world data, but some heuristic preprocessing—like PCA-ing and permuting the dimensions so that the cumulative per-dimension variance is approximately balanced between the halves—helps in many cases. And just like the simple k-means index, there is a fast algorithm for finding a ranked list of clusters to a query if we need to expand the candidate set.

After we have a set of candidates, we must rank them. We could store the full vector in the index and use it to compute the distance for each candidate item, but this would incur a large memory overhead (for example, 256 dimensional vectors of 4 byte floats would require 1Tb for 1 billion photos) as well as a computational overhead. LOPQ solves these issues by performing another product quantization, this time on the residuals of the data. The residual of a point is the difference vector between the point and its closest cluster centroid. Given a residual vector and the cluster indexes along with the corresponding centroids, we have enough information to reproduce the original vector exactly. Instead of storing the residuals, LOPQ product quantizes the residuals, usually with a higher number of splits, and stores only the cluster indexes in the index. For example, if we split the vector into 8 splits and each split is clustered with 256 centroids, we can store the compressed vector with only 8 bytes regardless of the number of dimensions to start (though certainly a higher number of dimensions will result in higher approximation error). With this lossy representation we can produce a reconstruction of a vector from the 8 byte codes: we simply take each quantization code, look up the corresponding centroid, and concatenate these 8 centroids together to produce a reconstruction. Likewise, we can approximate the distance from the query to an index vector by computing the distance between the query and the reconstruction. We can do this computation quickly for many candidate points by computing the squared difference of each split of the query to all of the centroids for that split. After computing this table, we can compute the squared difference for an index point by looking up the precomputed squared difference for each of the 8 indexes and summing them together to get the total squared difference. This caching trick allows us to quickly rank many candidates without resorting to distance computations in the original vector space.

LOPQ adds one final detail: for each cluster in the multi-index, LOPQ fits a local rotation to the residuals of the points that fall in that cluster. This rotation is simply a PCA that aligns the major directions of variation in the data to the axes followed by a permutation to heuristically balance the variance across the splits of the product quantization. Note that this is the exact preprocessing step that is usually performed at the top-level multi-index. It tends to make the approximate distance computations more accurate by mitigating errors introduced by assuming that each split of the vector in the production quantization is statistically independent from other splits. Additionally, since a rotation is fit for each cluster, they serve to fit the local data distribution better.

Below is a diagram from the LOPQ paper that illustrates the core ideas of LOPQ. K-means (a) is very effective at allocating cluster centroids, illustrated as red points, that target the distribution of the data, but it has other drawbacks at scale as discussed earlier. In the 2d example shown, we can imagine product quantizing the space with 2 splits, each with 1 dimension. Product Quantization (b) clusters each dimension independently and cluster centroids are specified by pairs of cluster indexes, one for each split. This is effectively a grid over the space. Since the splits are treated as if they were statistically independent, we will, unfortunately, get many clusters that are “wasted” by not targeting the data distribution. We can improve on this situation by rotating the data such that the main dimensions of variation are axis-aligned. This version, called Optimized Product Quantization (c), does a better job of making sure each centroid is useful. LOPQ (d) extends this idea by first coarsely clustering the data and then doing a separate instance of OPQ for each cluster, allowing highly targeted centroids while still reaping the benefits of product quantization in terms of scalability.

LOPQ is state-of-the-art for quantization methods, and you can find more information about the algorithm, as well as benchmarks, here. Additionally, we provide an open-source implementation in Python and Spark which you can apply to your own datasets. The algorithm produces a set of cluster indexes that can be queried efficiently in an inverted index, as described. We have also explored use cases that use these indexes as a hash for fast deduplication of images and large-scale clustering. These extended use cases are studied here.

Conclusion

We have described our system for large-scale visual similarity search at Flickr. Techniques for producing high-quality vector representations for images with deep learning are constantly improving, enabling new ways to search and explore large multimedia collections. These techniques are being applied in other domains as well to, for example, produce vector representations for text, video, and even molecules. Large-scale approximate nearest neighbor search has importance and potential application in these domains as well as many others. Though these techniques are in their infancy, we hope similarity search provides a useful new way to appreciate the amazing collection of images at Flickr and surface photos of interest that may have previously gone undiscovered. We are excited about the future of this technology at Flickr and beyond.

Acknowledgements

Yannis Kalantidis, Huy Nguyen, Stacey Svetlichnaya, Arel Cordero. Special thanks to the rest of the Computer Vision and Machine Learning team and the Vespa search team who manages Yahoo’s internal search engine.

A Year Without a Byte

One of the largest cost drivers in running a service like Flickr is storage. We’ve described multiple techniques to get this cost down over the years: use of COS, creating sizes dynamically on GPUs and perceptual compression. These projects have been very successful, but our storage cost is still significant.
At the beginning of 2016, we challenged ourselves to go further — to go a full year without needing new storage hardware. Using multiple techniques, we got there.

The Cost Story

A little back-of-the-envelope math shows storage costs are a real concern. On a very high-traffic day, Flickr users upload as many as twenty-five million photos. These photos require an average of 3.25 megabytes of storage each, totalling over 80 terabytes of data. Stored naively in a cloud service similar to S3, this day’s worth of data would cost over $30,000 per year, and continue to incur costs every year.

And a very large service will have over two hundred million active users. At a thousand images each, storage in a service similar to S3 would cost over $250 million per year (or $1.25 / user-year) plus network and other expenses. This compounds as new users sign up and existing users continue to take photos at an accelerating rate. Thankfully, our costs, and every large service’s costs, are different than storing naively at S3, but remain significant.



Cost per byte have decreased, but bytes per image from iPhone-type platforms have increased. Cost per image hasn’t changed significantly.

Storage costs do drop over time. For example, S3 costs dropped from $0.15 per gigabyte month in 2009 to $0.03 per gigabyte-month in 2014, and cloud storage vendors have added low-cost options for data that is infrequently accessed. NAS vendors have also delivered large price reductions.

Unfortunately, these lower costs per byte are counteracted by other forces. On iPhones, increasing camera resolution, burst mode and the addition of short animations (Live Photos) have increased bytes-per-image rapidly enough to keep storage cost per image roughly constant. And iPhone images are far from the largest.

In response to these costs, photo storage services have pursued a variety of product options. To name a few: storing lower quality images or re-compressing, charging users for their data usage, incorporating advertising, selling associated products such as prints, and tying storage to purchases of handsets.

There are also a number of engineering approaches to controlling storage costs. We sketched out a few and cover three that we implemented below: adjusting thresholds on our storage systems, rolling out existing savings approaches to more images, and deploying lossless JPG compression.

Adjusting Storage Thresholds

As we dug into the problem, we looked at our storage systems in detail. We discovered that our settings were based on assumptions about high write and delete loads that didn’t hold. Our storage is pretty static. Users only rarely delete or change images once uploaded. We also had two distinct areas of just-in-case space. 5% of our storage was reserved space for snapshots, useful for undoing accidental deletes or writes, and 8.5% was held free in reserve. This resulted in about 13% of our storage going unused. Trade lore states that disks should remain 10% free to avoid performance degradation, but we found 5% to be sufficient for our workload. So we combined our our two just-in-case areas into one and reduced our free space threshold to that level. This was our simplest approach to the problem (by far), but it resulted in a large gain. With a couple simple configuration changes, we freed up more than 8% of our storage.



Adjusting storage thresholds

Extending Existing Approaches

In our earlier posts, we have described dynamic generation of thumbnail sizes and perceptual compression. Combining the two approaches decreased thumbnail storage requirements by 65%, though we hadn’t applied these techniques to many of our images uploaded prior to 2014. One big reason for this: large-scale changes to older files are inherently risky, and require significant time and engineering work to do safely.

Because we were concerned that further rollout of dynamic thumbnail generation would place a heavy load on our resizing infrastructure, we targeted only thumbnails from less-popular images for deletes. Using this approach, we were able to handle our complete resize load with just four GPUs. The process put a heavy load on our storage systems; to minimize the impact we randomized our operations across volumes. The entire process took about four months, resulting in even more significant gains than our storage threshold adjustments.



Decreasing the number of thumbnail sizes

Lossless JPG Compression

Flickr has had a long-standing commitment to keeping uploaded images byte-for-byte intact. This has placed a floor on how much storage reduction we can do, but there are tools that can losslessly compress JPG images. Two well-known options are PackJPG and Lepton, from Dropbox. These tools work by decoding the JPG, then very carefully compressing it using a more efficient approach. This typically shrinks a JPG by about 22%. At Flickr’s scale, this is significant. The downside is that these re-compressors use a lot of CPU. PackJPG compresses at about 2MB/s on a single core, or about fifteen core-years for a single petabyte worth of JPGs. Lepton uses multiple cores and, at 15MB/s, is much faster than packJPG, but uses roughly the same amount of CPU time.

This CPU requirement also complicated on-demand serving. If we recompressed all the images on Flickr, we would need potentially thousands of cores to handle our decompress load. We considered putting some restrictions on access to compressed images, such as requiring users to login to access original images, but ultimately found that if we targeted only rarely accessed private images, decompressions would occur only infrequently. Additionally, restricting the maximum size of images we compressed limited our CPU time per decompress. We rolled this out as a component of our existing serving stack without requiring any additional CPUs, and with only minor impact to user experience.

Running our users’ original photos through lossless compression was probably our highest-risk approach. We can recreate thumbnails easily, but a corrupted source image cannot be recovered. Key to our approach was a re-compress-decompress-verify strategy: every recompressed image was decompressed and compared to its source before removing the uncompressed source image.

This is still a work-in-progress. We have compressed many images but to do our entire corpus is a lengthy process, and we had reached our zero-new-storage-gear goal by mid-year.

On The Drawing Board

We have several other ideas which we’ve investigated but haven’t implemented yet.

In our current storage model, we have originals and thumbnails available for every image, each stored in two datacenters. This model assumes that the images need to be viewable relatively quickly at any point in time. But private images belonging to accounts that have been inactive for more than a few months are unlikely to be accessed. We could “freeze” these images, dropping their thumbnails and recreate them when the dormant user returns. This “thaw” process would take under thirty seconds for a typical account. Additionally, for photos that are private (but not dormant), we could go to a single uncompressed copy of each thumbnail, storing a compressed copy in a second datacenter that would be decompressed as needed.

We might not even need two copies of each dormant original image available on disk. We’ve pencilled out a model where we place one copy on a slower, but underutilized, tape-based system while leaving the other on disk. This would decrease availability during an outage, but as these images belong to dormant users, the effect would be minimal and users would still see their thumbnails. The delicate piece here is the placement of data, as seeks on tape systems are prohibitively slow. Depending on the details of what constitutes a “dormant” photo these techniques could comfortably reduce storage used by over 25%.

We’ve also looked into de-duplication, but we found our duplicate rate is in the 3% range. Users do have many duplicates of their own images on their devices, but these are excluded by our upload tools.  We’ve also looked into using alternate image formats for our thumbnail storage.    WebP can be much more compact than ordinary JPG but our use of perceptual compression gets us close to WebP byte size and permits much faster resize.  The BPG project proposes a dramatically smaller, H.265 based encoding but has IP and other issues.

There are several similar optimizations available for videos. Although Flickr is primarily image-focused, videos are typically much larger than images and consume considerably more storage.

Conclusion



Optimization over several releases

Since 2013 we’ve optimized our usage of storage by nearly 50%.  Our latest efforts helped us get through 2016 without purchasing any additional storage,  and we still have a few more options available.

Peter Norby, Teja Komma, Shijo Joy and Bei Wu formed the core team for our zero-storage-budget project. Many others assisted the effort.

Personalized Group Recommendations on Flickr

There are two primary paradigms for the discovery of digital content. First is the search paradigm, in which the user is actively looking for specific content using search terms and filters (e.g., Google web search, Flickr image search, Yelp restaurant search, etc.). Second is a passive approach, in which the user browses content presented to them (e.g., NYTimes news, Flickr Explore, and Twitter trending topics). Personalization benefits both approaches by providing relevant content that is tailored to users’ tastes (e.g., Google News, Netflix homepage, LinkedIn job search, etc.). We believe personalization can improve the user experience at Flickr by guiding both new as well as more experienced members as they explore photography. Today, we’re excited to bring you personalized group recommendations.

Flickr Groups are great for bringing people together around a common theme, be it a style of photography, camera, place, event, topic, or just some fun. Community members join for several reasons—to consume photos, to get feedback, to play games, to get more views, or to start a discussion about photos, cameras, life or the universe. We see value in connecting people with appropriate groups based on their interests. Hence, we decided to start the personalization journey by providing contextually relevant and personalized content that is tuned to each person’s unique taste.

Of course, in order to respect users’ privacy, group recommendations only consider public photos and public groups. Additionally, recommendations are private to the user. In other words, nobody else sees what is recommended to an individual.

In this post we describe how we are improving Flickr’s group recommendations. In particular, we describe how we are replacing a curated, non-personalized, static list of groups with a dynamic group recommendation engine that automatically generates new results based on user interactions to provide personalized recommendations unique to each person. The algorithms and backend systems we are building are broad and applicable to other scenarios, such as photo recommendations, contact recommendations, content discovery, etc.

Group_recommendations2.png

Figure: Personalized group recommendations

Challenges

One challenge of recommendations is determining a user’s interests. These interests could be user-specified, explicit preferences or could be inferred implicitly from their actions, supported by user feedback. For example:

  • Explicit:
    • Ask users what topics interest them
    • Ask users why they joined a particular group
  • Implicit:
    • Infer user tastes from groups they join, photos they like, and users they follow
    • Infer why users joined a particular group based on their activity, interactions, and dwell time
  • Feedback:
    • Get feedback on recommended items when users perform actions such as “Join” or “Follow” or click “Not interested”

Another challenge of recommendations is figuring out group characteristics. I.e.: what type of group is it? What interests does it serve? What brings Flickr members to this group? We can infer this by analyzing group members, photos posted to the group, discussions and amount of activity in the group.

Once we have figured out user preferences and group characteristics, recommendations essentially becomes a matchmaking process. At a high-level, we want to support 3 use cases:

  • Use Case # 1: Given a group, return all groups that are “similar”
  • Use Case # 2: Given a user, return a list of recommended groups
  • Use Case # 3: Given a photo, return a list of groups that the photo could belong to

Collaborative Filtering

One approach to recommender systems is presenting similar content in the current context of actions. For example, Amazon’s “Customers who bought this item also bought” or LinkedIn’s “People also viewed.” Item-based collaborative filtering can be used for computing similar items.

collaborative_filtering

Figure: Collaborative filtering in action

By Moshanin (Own work) [CC BY-SA 3.0] from Wikipedia

Intuitively, two groups are similar if they have the same content or same set of users. We observed that users often post the same photo to multiple groups. So, to begin, we compute group similarity based on a photo’s presence in multiple groups.  

Consider the following sample matrix M(Gi -> Pj) constructed from group photo pools, where 1 means a corresponding group (Gi) contains an image, and empty (0) means a group does not contain the image.

matrix1

From this, we can compute M.M’ (M’s transpose), which gives us the number of common photos between every pair of groups (Gi, Gj):

matrix2

We use modified cosine similarity to compute a similarity score between every pair of groups:

cosinesimilarity

To make this calculation robust, we only consider groups that have a minimum of X photos and keep only strong relationships (i.e., groups that have at least Y common photos). Finally, we use the similarity scores to come up with the top k-nearest neighbors for each group.

We also compute group similarity based on group membership —i.e., by defining group-user relationship (Gi -> Uj) matrix. It is interesting to note that the results obtained from this relationship are very different compared to (Gi, Pj) matrix. The group-photo relationship tends to capture groups that are similar by content (e.g.,“macro photography”). On the other hand, the group-user relationship gives us groups that the same users have joined but are possibly about very different topics, thus providing us with a diversity of results. We can extend this approach by computing group similarity using other features and relationships (e.g., autotags of photos to cluster groups by themes, geotags of photos to cluster groups by place, frequency of discussion to cluster groups by interaction model, etc.).

Using this we can easily come up with a list of similar groups (Use Case # 1). We can either merge the results obtained by different similarity relationships into a single result set, or keep them separate to power features like “Other groups similar to this group” and “People who joined this group also joined.”

We can also use the same data for recommending groups to users (Use Case # 2). We can look at all the groups that the user has already joined and recommend groups similar to those.

To come up with a list of relevant groups for a photo (Use Case # 3), we can compute photo similarity either by using a similar approach as above or by using Flickr computer vision models for finding photos similar to the query photo. A simple approach would then be to recommend groups that these similar photos belong to.

Implementation

Due to the massive scale (millions of users x 100k groups) of data, we used Yahoo’s Hadoop Stack to implement the collaborative filtering algorithm. We exploited sparsity of entity-item relationship matrices to come up with a more efficient model of computation and used several optimizations for computational efficiency. We only need to compute the similarity model once every 7 days, since signals change slowly.

architecture_diagram

Figure: Computational architecture

(All logos and icons are trademarks of respective entities)

 

Similarity scores and top k-nearest neighbors for each group are published to Redis for quick lookups needed by the serving layer. Recommendations for each user are computed in real-time when the user visits the groups page. Implementation of the serving layer takes care of a few aspects that are important from usability and performance point-of-view:

  • Freshness of results: Users hate to see the same results being offered even though they might be relevant. We have implemented a randomization scheme that returns fresh results every X hours, while making sure that results stay static over a user’s single session.
  • Diversity of results: Diversity of results in recommendations is very important since a user might not want to join a group that is very similar to a group he’s already involved in. We require a good threshold that balances similarity and diversity. To improve diversity further, we combine recommendations from different algorithms. We also cluster the user’s groups into diverse sets before computing recommendations.
  • Dynamic results: Users expect their interactions to have a quick effect on recommendations. We thus incorporate user interactions while making subsequent recommendations so that the system feels dynamic.
  • Performance: Recommendation results are cached so that API response is quick on subsequent visits.

Cold Start

The drawback to collaborative filtering is that it cannot offer recommendations to new users who do not have any associations. For these users, we plan to recommend groups from an algorithmically computed list of top/trending groups alongside manual curation. As users interact with the system by joining groups, the recommendations become more personalized.

Measuring Effectiveness

We use qualitative feedback from user studies and alpha group testing to understand user expectation and to guide initial feature design. However, for continued algorithmic improvements, we need an objective quantitative metric. Recommendation results by their very nature are subjective, so measuring effectiveness is tricky. The usual approach taken is to roll out to a random population of users and measure the outcome of interest for the test group as compared to the control group (ref: A/B testing).

We plan to employ this technique and measure user interaction and engagement to keep improving the recommendation algorithms. Additionally, we plan to measure explicit signals such as when users click “Not interested.” This feedback will also be used to fine-tune future recommendations for users.

measuringeffectiveness

Figure: Measuring user engagement

Future Directions

While we’re seeing good initial results, we’d like to continue improving the algorithms to provide better results to the Flickr community. Potential future directions can be classified broadly into 3 buckets: algorithmic improvements, new product use cases, and new recommendation applications.

If you’d like to help, we’re hiring. Check out our jobs page and get in touch.

Product Engineering: Mehul Patel, Chenfan (Frank) Sun,  Chinmay Kini

We Want You… and Your Teammates

14493569810_7ac064e3c4_oWe’re hiring here at Flickr and we got pretty excited the other week when we saw Stripe’s post: BYOT (Bring Your Own Team). The sum of the parts is greater than the whole and all that. Genius <big hat tip to them>.

In case you didn’t read Stripe’s post, here’s the gist: you’re a team player, you like to make an impact, focus on a tough problem, set a challenging goal, and see the fruits of your labor after blood, sweat, and tears (or, maybe just brainpower). But you’ve got the itch to collaborate, to talk an idea through, break it down, and parallelize tasks or simply to be around your mates through work and play. Turns out you already have your go-to group of colleagues, roommates, siblings, or buddies that push, inspire, and get the best out of you. Well, in that case we may want to hire all of you!

Like Stripe, we understand the importance of team dynamics. So if you’ve already got something good going on, we want in on it too. We love Stripe and are stoked for this initiative of theirs, but if Flickr tickles your fancy (and it does ours :) consider bringing that team of yours this way too, especially if you’ve got a penchant for mobile development. We’d love to chat!

Email us: jobs at flickr.com

Team crop

Photos by: @Chris Martin and @Captain Eric Willis

Introducing yakbak: Record and playback HTTP interactions in NodeJS

Did you know that the new Front End of www.flickr.com is one big Flickr API client? Writing a client for an existing API or service can be a lot of fun, but decoupling and testing that client can be quite tricky. There are many different approaches to taking the backing service out of the equation when it comes to writing tests for client code. Today we’ll discuss the pros and cons of some of these approaches, describe how the Flickr Front End team tests service-dependent libraries, and introduce you to our new NodeJS HTTP playback module: yakbak!

Scenario: Testing a Flickr API Client

Let’s jump into some code, shall we? Suppose we’re testing a (very, very simple) photo search API client:

Currently, this code will make an HTTP request to the Flickr API on every test run. This is less than desirable for several reasons:

  • UGC is unpredictable. In this test, we’re asserting that the response code is an HTTP 200, but obviously our client code needs to provide the response data to be useful. It’s impossible to write a meaningful and predictable test against live content.
  • Traffic is unpredictable. This photos search API call usually takes ~150ms for simple queries, but a more complex query or a call during peak traffic may take longer.
  • Downtime is unpredictable. Every service has downtime (the term is “four nines,” not “one hundred percent” for a reason), and if your service is down, your client tests will fail.
  • Networks are unpredictable. Have you ever tried coding on a plane? Enough said.

We want our test suite to be consistent, predictable, and fast. We’re also only trying to test our client code, not the API. Let’s take a look at some ways to replace the API with a control, allowing us to predictably test the client code.

Approach 1: Stub the HTTP client methods

We’re using superagent as our HTTP client, so we could use a mocking library like sinon to stub out superagent’s Request methods:

With these changes, we never actually make an HTTP request to the API during a test run. Now our test is predictable, controlled, and it runs crazy fast. However, this approach has some major drawbacks:

  • Tightly coupled with superagent. We’re all up in the client’s implementation details here, so if superagent ever changes their API, we’ll need to correct our tests to match. Likewise, if we ever want to use a different HTTP client, we’ll need to correct our tests as well.
  • Difficult to specify the full HTTP response. Here we’re only specifying the statusCode; what about when we need to specify the body or the headers? Talk about verbose.
  • Not necessarily accurate. We’re trusting the test author to provide a fake response that matches what the actual server would send back. What happens if the API changes the response schema? Some unhappy developer will have to manually update the tests to match reality (probably an intern, let’s be honest).

We’ve at least managed to replace the service with a control in our tests, but we can do (slightly) better.

Approach 2: Mock the NodeJS HTTP module

Every NodeJS HTTP client will eventually delegate to the standard NodeJS http module to perform the network request. This means we can intercept the request at a low level by using a tool like nock:

Great! We’re no longer stubbing out superagent and we can still control the HTTP response. This avoids the HTTP client coupling from the previous step, but still has many similar drawbacks:

  • We’re still completely implementation-dependent. If we want to pass a new query string parameter to our service, for example, we’ll also need to add it to the test so that nock will match the request.
  • It’s still laborious to specify the response headers, body, etc.
  • It’s still difficult to make sure the response body always matches reality.

At this point, it’s worth noting that none of these bullet points were an issue back when we were actually making the HTTP request. So, let’s do exactly that (once!).

Approach 3: Record and playback the HTTP interaction

The Ruby community created the excellent VCR gem for recording and replaying HTTP interactions during tests. Recorded HTTP requests exist as “tapes”, which are just files with some sort of format describing the interaction. The basic workflow goes like this:

  1. The client makes an actual HTTP request.
  2. VCR sits in front of the system’s HTTP library and intercepts the request.
  3. If VCR has a tape matching the request, it simply replays the response to the client.
  4. Otherwise, VCR lets the HTTP request through to the service, records the interaction to a new tape on disk and plays it back to the client.

Introducing yakbak

Today we’re open-sourcing yakbak, our take on recording and playing back HTTP interactions in NodeJS. Here’s what our tests look like with a yakbak proxy:

Here we’ve created a standard NodeJS http.Server with our proxy middleware. We’ve also configured our client to point to the proxy server instead of the origin service. Look, no implementation details!

yakbak tries to do things The Node Way™ wherever possible. For example, each yakbak “tape” is actually its own module that simply exports an http.Server handler, which allows us to do some really cool things. For example, it’s trivial to create a server that always responds a certain way. Since the tape’s hash is based solely on the incoming request, we can easily edit the response however we like. We’re also kicking around a handful of enhancements that should make yakbak an even more powerful development tool.

Thanks to yakbak, we’ve been writing fast, consistent, and reliable tests for our HTTP clients and applications. Want to give it a spin? Check it out today: https://github.com/flickr/yakbak

P.S. We’re hiring!

Do you love development tooling and helping keep teams on the latest and greatest technology? Or maybe you just want to help build the best home for your photos on the entire internet? We’re hiring Front End Ops and tons of other great positions. We’d love to hear from you!

Our Justified Layout Goes Open Source

We introduced the justified layout on Flickr.com late in 2011. Our community of photographers loved it for its ability to efficiently display many photos at their native aspect ratio with visually pleasing, consistent whitespace, so we quickly added it to the rest of the website.

Justified Example

It’s been through many iterations and optimizations. From back when we were primarily on the PHP stack to our lovely new JavaScript based isomorphic stack. Last year Eric Socolofsky did a great job explaining how the algorithm works and how it fits into a larger infrastructure for Flickr specifically.

In the years following its launch, we’ve had requests from our front end colleagues in other teams across Yahoo for a reusable package that does photo (or any rectangle) presentation like this, but it’s always been too tightly coupled to our stack to separate it out and hand it over. Until now! Today we’re publishing the justified-layout algorithm wrapped in an npm module for you to use on the server, or client, in your own projects.

Install/Download

npm install justified-layout --save

Or grab it directly from Github.

Using it

It’s really easy to use. No configuration is required. Just pass in an array of aspect ratios representing the photos/boxes you’d like to lay out:

var layoutGeometry = require('justified-layout')([1.33, 1, 0.65] [, config]);

If you only have dimensions and don’t want an extra step to convert them to aspect ratios, you can pass in an array of widths and heights like this:

What it returns

The geometry data for the layout items, in the same order they’re passed in.

This is the extent of what the module provides. There’s no rendering component. It’s up to you to use this data to render boxes the way you want. Use absolute positioning, background positions, canvas, generate a static image on the backend, whatever you like! There’s a very basic implementation used on the demo and docs page.

Configuration

It’s highly likely the defaults don’t satisfy your requirements; they don’t even satisfy ours. There’s a full set of configuration options to customize the output just the way you want. My favorite is the fullWidthBreakoutRowCadence option that we use on album pages. All config options are documented on the docs and demo page.

Compatibility

  • Latest Chrome
  • Latest Safari
  • Latest Firefox
  • Latest Mobile Safari
  • IE 9+
  • Node 0.10+

The future

The justified layout algorithm is just one part of our photo list infrastructure. Following this, we’ll be open sourcing more modules for handling data, handling state, reverse layouts, appending and prepending items for pagination.

We welcome your feedback, issues and contributions on Github.

P.S. Open Source at Flickr

This is the first of quite a bit of code we have in the works for open source release. If working on open source projects appeals to you, we’re hiring!

 

Configuration management for distributed systems (using GitHub and cfg4j)

Norbert Potocki, Software Engineer @ Yahoo Inc.

Warm up: Why configuration management?

When working with large-scale software systems, configuration management becomes crucial; supporting non-uniform environments gets greatly simplified if you decouple code from configuration. While building complex software/products such as Flickr, we had to come up with a simple, yet powerful, way to manage configuration. Popular approaches to solving this problem include using configuration files or having a dedicated configuration service. Our new solution combines the extremely popular GitHub and cfg4j library, giving you a very flexible approach that will work with applications of any size.

Why should I decouple configuration from the code?

  • Faster configuration changes (e.g. flipping feature toggles): Configuration can simply be injected without requiring parts of your code to be reloaded and re-executed. Config-only updates tend to be faster than code deployment.
  • Different configuration for different environments: Running your app on a laptop or in a test environment requires a different set of settings than production instance.
  • Keeping credentials private: If you don’t have a dedicated credential store, it may be convenient to keep credentials as part of configuration. They usually aren’t supposed to be “public,” but the code still may be. Be a good sport and don’t keep credentials in a public GitHub repo. :)

Meet the Gang: Overview of configuration management players

Let’s see what configuration-specific components we’ll be working with today:

image
Figure 1 –  Overview of configuration management components

Configuration repository and editor: Where your configuration lives. We’re using Git for storing configuration files and GitHub as an ad hoc editor.

Push cache : Intermediary store that we use to improve fetch speed and to ease load on GitHub servers.

CD pipeline: Continuous deployment pipeline pushing changes from repository to push cache, and validating config correctness.

Configuration library: Fetches configs from push cache and exposing them to your business logic.

Bootstrap configuration : Initial configuration specifying where your push cache is (so that library knows where to get configuration from).

All these players work as a team to provide an end-to-end configuration management solution.

The Coach: Configuration repository and editor

The first thing you might expect from the configuration repository and editor is ease of use. Let’s enumerate what that means:

  • Configuration should be easy to read and write.
  • It should be straightforward to add a new configuration set.
  • You most certainly want to be able to review changes if your team is bigger than one person.
  • It’s nice to see a history of changes, especially when you’re trying to fix a bug in the middle of the night.
  • Support from popular IDEs – freedom of choice is priceless.
  • Multi-tenancy support (optional) is often pragmatic.

So what options are out there that may satisfy those requirements? The three very popular formats for storing configuration are YAML, Java Property files, and XML files. We use YAML – it is widely supported by multiple programming languages and IDEs, and it’s very readable and easy to understand, even by a non-engineer.

We could use a dedicated configuration store; however, the great thing about files is that they can be easily versioned by version control tools like Git, which we decided to use as it’s widely known and proven.

Git provides us with a history of changes and an easy way to branch off configuration. It also has great support in the form of GitHub which we use both as an editor (built-in support for YAML files) and collaboration tool (pull requests, forks, review tool). Both are nicely glued together by following the Git flow branching model. Here’s an example of a configuration file that we use:

Figure 2 –  configuration file preview

One of the goals was to make managing multiple configuration sets (execution environments) a breeze. We need the ability to add and remove environments quickly. If you look at the screenshot below, you’ll notice a “prod-us-east” directory in the path. For every environment, we store a separate directory with config files in Git. All of them have the exact same structure and only differ in YAML file contents.

This solution makes working with environments simple and comes in very handy during local development or new production fleet rollout (see use cases at the end of this article). Here’s a sample config repo for a project that has only one “feature”:

Figure 3 –  support for multiple environments

Some of the products that we work with at Yahoo have a very granular architecture with hundreds of micro-services working together. For scenarios like this, it’s convenient to store configurations for all services in a single repository. It greatly reduces the overhead of maintaining multiple repositories. We support this use case by having multiple top-level directories, each holding configurations for one service only.

The sprinter: Push cache

The main role of push cache is to decrease the load put on the GitHub server and improve configuration fetch time. Since speed is the only concern here, we decided to keep the push cache simple: it’s just a key-value store. Consul was our choice, in part because it’s fully distributed.

You can install Consul clients on the edge nodes and they will keep being synchronized across the fleet. This greatly improves both the reliability and the performance of the system. If performance is not a concern, any key-value store will do. You can skip using push cache altogether and connect directly to Github, which comes in handy during development (see use cases to learn more about this).

The Manager: CD Pipeline

When the configuration repository is updated, a CD pipeline kicks in. This fetches configuration, converts it into a more optimized format, and pushes it to cache. Additionally, the CD pipeline validates the configuration (once at pull-request stage and again after being merged to master) and controls multi-phase deployment by deploying config change to only 20% of production hosts at one time.

The Mascot: Bootstrap configuration

Before we can connect to the push cache to fetch configuration, we need to know where it is. That’s where bootstrap configuration comes into play. It’s very simple. The config contains the hostname, port to connect to, and the name of the environment to use. You need to put this config with your code or as part of the CD pipeline. This simple yaml file binding Spring profiles to different Consul hosts suffices for our needs:

image
Figure 4 –  bootstrap configuration

The Cool Guy: Configuration library

image

The configuration library takes care of fetching the configuration from push cache and exposing it to your business logic. We use the library called cfg4j (“configuration for java”). This library re-loads configurations from the push cache every few seconds and injects them into configuration objects that our code uses. It also takes care of local caching, merging properties from different repositories, and falling back to user-provided defaults when necessary (read more at http://www.cfg4j.org/).

Briefly summarizing how we use cfg4j’s features:

  • Configuration auto-reloading: Each service reloads configuration every ~30 seconds and auto re-configures itself.
  • Multi-environment support: for our multiple environments (beta, performance, canary, production-us-west, production-us-east, etc.).
  • Local caching: Remedies service interruption when the push cache or configuration repository is down and also improves the performance for obtaining configs.
  • Fallback and merge strategies: Simplifies local development and provides support for multiple configuration repositories.
  • Integration with Dependency Injection containers – because we love DI!

If you want to play with this library yourself, there’s plenty of examples both in its documentation and cfg4j-sample-apps Github repository.

The Heavy Lifter: Configurable code

The most important piece is business logic. To best make use of a configuration service, the business logic has to be able to re-configure itself in runtime. Here are a few rules of thumb and code samples:

  • Use dependency injection for injecting configuration. This is how we do it using Spring Framework (see the bootstrap configuration above for host/port values):

  • Use configuration objects to inject configuration instead of providing configuration directly – here’s where the difference is:

Direct configuration injection (won’t reload as config changes)

Configuration injection via “interface binding” (will reload as config changes):

The exercise: Common use-cases (applying our simple solution)

Configuration during development (local overrides)

When you develop a feature, a main concern is the ability to evolve your code quickly.  A full configuration-management pipeline is not conducive to this. We use the following approaches when doing local development:

  • Add a temporary configuration file to the project and use cfg4j’s MergeConfigurationSource for reading config both from the configuration store and your file. By making your local file a primary configuration source, you provide an override mechanism. If the property is found in your file, it will be used. If not, cfg4j will fall back to using values from configuration store. Here’s an example (reference examples above to get a complete code):

  • Fork the configuration repository, make changes to the fork and use cfg4j’s GitConfigurationSource to access it directly (no push
    cache required):

  • Set up your private push cache, point your service to the cache, and edit values in it directly.

Configuration defaults

When you work with multiple environments, some of them may share a configuration. That’s when using configuration defaults may be convenient. You can do this by creating a “default” environment and using cfg4j’s MergeConfigurationSource for reading config first from the original environment and then (as a fallback) from “default” environment.

Dealing with outages

Configuration repository, push cache, and configuration CD pipeline can experience outages. To minimize the impact of such events, it’s good practice to cache configuration locally (in-memory) after each fetch. cfg4j does that automatically.

Responding to incidents – ultra fast configuration updates (skipping configuration CD pipeline)

Tests can’t always detect all problems. Bugs leak to the production environment and at times it’s important to make a config change as fast as possible to stop the fire. If you’re using push cache, the fastest way to modify config values is to make changes directly within the cache. Consul offers a rich REST API and web ui for updating configuration in the key-value store.

Keeping code and configuration in sync

Verifying that code and configuration are kept in sync happens at the configuration CD pipeline level. One part of the continuous deployment process deploys the code into a temporary execution environment, and points it to the branch that contains the configuration changes. Once the service is up, we execute a batch of functional tests to verify configuration correctness.

The cool down: Summary

The presented solution is the result of work that we put into building huge-scale photo-serving services. We needed a simple, yet flexible, configuration management system. Combining Git, Github, Consul and cfg4j provided a very satisfactory solution that we encourage you to try.

I want to thank the following people for reviewing this article: Bhautik Joshi, Elanna Belanger, Archie Russell.

PS. You can also follow me on Twitter, GitHub, LinkedIn or my private blog.

The 32 Days Of Christmas!

LEGO City Advent Calendar - Day 7

When you have thousands of photos, it can be hard to find the photo you’re looking for. Want to search for that Christmas cat you saw at last year’s party? And what if that party wasn’t on Christmas day, but sometime the week before? To help improve the search ranking and relevance of national, personal, and religious holiday photos, we first have to see when the photos were taken; when, for example, is the Christmas season?

Understanding what people are looking for when they search for their own photos is an important part of improving Flickr. Earlier this year, we began a study (which will be published at CHI 2016 under the same name as this post) by trying to understand how people searched for their personal photos. We showed a group of 74 participants roughly 20 of their own photos on Flickr, and asked them what they’d put into the Flickr search box to find those photos. We did this a total of 1492 times.

It turns out 12% of the time people used a temporal term in searches for their own photos, meaning a word connected to time in some way. These might include a year (2015), a month (January), a season (winter), or a holiday or special event (Thanksgiving, Eid al-Fitr, Easter, Passover, Burning Man). Often, however, the date and time on the photograph didn’t match the search term: the year would be wrong, or people would search for a photograph of snow the weekend after Thanksgiving with the word “winter,” despite the fact that winter doesn’t officially begin until December 21st in the U.S. So we wanted to understand that situation: how often does fall feel like winter?

To answer this, we mapped 78.8 million Flickr photos tagged with a season name to the date the photo was actually taken.

Seasons Tagged by Date

As you’d expect, most of the photographs tagged with a season are taken during that season: 66% of photos tagged “winter” were taken between December 22 and March 20. About 9% of search words are off by two seasons: photos tagged “summer” that were taken between December 21st and March 20th, for example. We expect this may reflect antipodean seasons: while most Flickr users are in the Northern Hemisphere, it doesn’t seem unreasonable that 5% of “summer” photographs might have been taken in the Southern Hemisphere. More interesting, we think, are the off-by-one cases, like fall photographs labeled as “winter,” where we believe that the photo represents the experience of winter, regardless of the objective reality of the calendar. For example, if it snows the day after Thanksgiving, it definitely feels like winter.

On the topic of Thanksgiving, let’s look at photographs tagged “thanksgiving.”

Percentage of Photos Tagged "Thanksgiving"
The six days between November 22nd and 27th—the darkest blue area—cover 65% of the photos. Expanding that range to November 15–30th covers 83%. Expanding to all of November covers 85%, and including October (and thus Canadian Thanksgiving, in gray in early October) brings the total to 90%. But that means that 10% of all photos tagged “thanksgiving” are outside of this range. Every date in that image represents a total of a minimum of 40 photographs taken on that day between 2003 and 2014 inclusive, uploaded to Flickr and tagged “thanksgiving” with the only white spaces being days that don’t exist, like February 30th or April 31st. Manual verification of some of the public photos tagged “thanksgiving” on arbitrarily chosen dates finds these photographs tagged “thanksgiving” included pumpkins or turkeys, autumnal leaves or cornucopias—all images culturally associated with the holiday.

Not all temporal search terms are quite so complicated; some holidays are celebrated and photographed on a single day each year, like Canada Day (July 1st) or Boxing Day (December 26th). While these holidays can be easily translated to date queries, other holidays have more complicated temporal patterns. Have a look at these lunar holidays.

Lunar Holidays Tagged by Date

There are some events that occur on a lunar calendar like Chinese New Year, Easter, Eid (both al-Fitr and al-Adha), and Hanukkah. These events move around in a regular, algorithmically determinable, but sometimes complicated, way. Most of these holidays tend to oscillate as a leap calculation is added periodically to synchronize the lunar timing to the solar calendar. However Eids, on the Hijri calendar, have no such leap correction, and we see photos tagged “Eid” edge forward year after year.

Some holidays and events, like birthdays, happen on every day of the week. But they’re often celebrated, and thus photographed, on Friday, Saturday, and Sunday:

Day of the week tagged Birthday

So to get back to our original question: when are photos tagged “Christmas” actually taken?

Days tagged with Christmas

As you can see, more photos tagged “Christmas” are taken on December 25th than on any other day (19%). Christmas Eve is a close second, at 12%. If you look at other languages, this difference practically goes away: 9.2% of photos tagged “Noel” are taken on Christmas Eve, and 9.6% are taken on Christmas; “navidad” photos are 11.3% on Christmas Eve and 12.0% on Christmas. But Christmas photos are taken throughout December. We can now set a threshold for a definition of Christmas: say if at least 1% of the photos tagged “Christmas” were taken on that day, we’d rank it more relevant. That means that every day from December 1st to January 1st hits that definition, with December 2nd barely scraping in. That makes…32 days of Christmas!

Merry Christmas and Happy Holidays—for all the holidays you celebrate and photograph.

PS: Flickr is hiring! Labs is hiring! Come join us!

Flickr’s experience with iOS 9

In the last couple of months, Apple has released new features as part of iOS 9 that allow a deeper integration between apps and the operating system. Among those features are Spotlight Search integration, Universal Links, and 3D Touch for iPhone 6S and iPhone 6S Plus.

Here at Flickr, we have added support for these new features and we have learned a few lessons that we would love to share.

Spotlight Search

There are two different kinds of content that can be searched through Spotlight: the kind that you explicitly index, and the kind that gets indexed based on the state your app is in. To explicitly index content, you use Core Spotlight, which lets you index multiple items at once. To index content related to your app’s current state, you use NSUserActivity: when a piece of content becomes visible, you start an activity to make iOS aware of this fact. iOS can then determine which pieces of content are more frequently visited, and thus more relevant to the user. NSUserActivity also allows us to mark certain items as public, which means that they might be shown to other iOS users as well.

For a better user experience, we index as much useful information as we can right off the bat. We prefetch all the user’s albums, groups, and people they follow, and add them to the search index using Core Spotlight. Indexing an item looks like this:

// Create the attribute set, which encapsulates the metadata of the item we're indexing
CSSearchableItemAttributeSet *attributeSet = [[CSSearchableItemAttributeSet alloc] initWithItemContentType:(NSString *)kUTTypeImage];
attributeSet.title = photo.title;
attributeSet.contentDescription = photo.searchableDescription;
attributeSet.keywords = photo.keywords;
attributeSet.thumbnailData = UIImageJPEGRepresentation(photo.thumbnail, 0.98);

// Create the searchable item and index it.
CSSearchableItem *searchableItem = [[CSSearchableItem alloc] initWithUniqueIdentifier:[NSString stringWithFormat:@"%@/%@", photo.identifier, photo.searchContentType] domainIdentifier:@"FLKCurrentUserSearchDomain" attributeSet:attributeSet];
[[CSSearchableIndex defaultSearchableIndex] indexSearchableItems:@[ searchableItem ] completionHandler:^(NSError * _Nullable error) {
                       if (error) {
                           // Handle failures.
                       }
              }];

Since we have multiple kinds of data – photos, albums, and groups – we had to create an identifier that is a combination of its type and its actual model ID.

Many users will have a large amount of data to be fetched, so it’s important that we take measures to make sure that the app still performs well. Since searching is unlikely to happen right after the user opens the app (that’s when we start prefetching this data, if needed), all this work is performed by a low-priority NSOperationQueue. If we ever need to fetch images to be used as thumbnails, we request it with low-priority NSURLSessionDownloadTask. These kinds of measures ensure that we don’t affect the performance of any operation or network request triggered by user actions, such as fetching new images and pages when scrolling through content.

Flickr provides a huge amount of public content, including many amazing photos. If anybody searches for “Northern Lights” in Spotlight, shouldn’t we show them our best Aurora Borealis photos? For this public content – photos, public groups, tags and so on – we leverage NSUserActivity, with its new search APIs, to make it all searchable when viewed. Here’s an example:

CSSearchableItemAttributeSet *attributeSet = [[CSSearchableItemAttributeSet alloc] initWithItemContentType:(NSString *) kUTTypeImage];
// Setup attributeSet the same way we did before...
// Set the related unique identifier, so it matches to any existing item indexed with Core Spotlight.     
attributeSet.relatedUniqueIdentifier = [NSString stringWithFormat:@"%@/%@", photo.identifier, photo.searchContentType];
        
self.userActivity = [[NSUserActivity alloc] initWithActivityType:@"FLKSearchableUserActivityType"];
self.userActivity.title = photo.title;
self.userActivity.keywords = [NSSet setWithArray:photo.keywords];
self.userActivity.webpageURL = photo.photoPageURL;
self.userActivity.contentAttributeSet = attributeSet;
self.userActivity.eligibleForSearch = YES;
self.userActivity.eligibleForPublicIndexing = photo.isPublic;
self.userActivity.requiredUserInfoKeys = [NSSet setWithArray:self.userActivity.userInfo.allKeys];
        
[self.userActivity becomeCurrent];

Every time a user opens a photo, public group, location page, etc., we create a new NSUserActivity and make it current. The more often a specific activity is made current, the more relevant iOS considers it. In fact, the more often an activity is made current by any number of different users, the more relevant Apple considers it globally, and the more likely it will show up for other iOS users as well (provided it’s public).

Until now we’ve only seen half the picture. We’ve seen how to index things for Spotlight search; when a user finally does search and taps on a result, how do we take them to the right place in our app? We’ll get to this a bit later, but for now suffice it to say that you’ll get a call to the method application:continueUserActivity:restorationHandler: to our application delegate.

It’s important to note that if we wanted to make use of the userInfo in the NSUserActivity, iOS won’t give it back to you for free in this method. To get it, we have to make sure that we assigned an NSSet to the requiredUserInfoKeys property of our NSUserActivity when we created it. In their documentation, Apple also tells us that if you set the webpageURL property when eligibleForSearch is YES, you need to make sure that you’re pointing to the right web URL corresponding to your content, otherwise you might end up with duplicate results in Spotlight (Apple crawls your site for content to surface in Spotlight, and if it finds the same content at a different URL it’ll think it’s a different piece of content).

Universal Links

In order to support Universal Links, Apple requires that every domain supported by the app host an “apple-app-site-association” file at its root. This is a JSON file that describes which relative paths in your domains can be handled by the app. When a user taps a link from another app in iOS, if your app is able to handle that domain for a specific path, it will open your app and call application:continueUserActivity:restorationHandler:. Otherwise your application won’t be opened – Safari will handle the URL instead.

{
    "applinks": {
        "apps": [],
        "details": {
            "XXXXXXXXXX.com.some.flickr.domain": {
                "paths": [
                    "/",
                    "/photos/*",
                    "/people/*",
                    "/groups/*"
                ]
            }
        }
    }
}

This file has to be hosted on HTTPS with a valid certificate. Its MIME type needs to be “application/pkcs7-mime.” No redirects are allowed when requesting the file. If the only intent is to support Universal Links, no further steps are required. But if you’re also using this file to support Handoffs (introduced in iOS 8), then your file has to be CMS signed by a valid TLS certificate.

In Flickr, we have a few different domains. That means that each one of flickr.com, http://www.flickr.com, m.flickr.com and flic.kr must provide its own JSON association file, whether or not they differ. In our case, the flic.kr domain actually does support different paths, since it’s only used for short URLs; hence, its “apple-app-site-association” is different than the others.

On the client side, only a few steps are required to support Universal Links. First, “Associated Domains” must be enabled under the Capabilities tab of the app’s target settings. For each supported domain, an entry “applinks:” entry must be added. Here is how it looks for Flickr:

Screen Shot 2015-10-28 at 2.00.59 PM

That is it. Now if someone receives a text message with a Flickr link, she will jump right to the Flickr app when she taps on it.

Deep linking into the app

Great! We have Flickr photos showing up as search results and Flickr URLs opening directly in our app. Now we just have to get the user to the proper place within the app. There are different entry points into our app, and we need to make the implementation consistent and avoid code duplication.

iOS has been supporting deep linking for a while already and so has Flickr. To support deep linking, apps could register to handle custom URLs (meaning a custom scheme, such as myscheme://mydata/123). The website corresponding to the app could then publish links directly to the app. For every custom URL published on the Flickr website, our app translates it into a representation of the data to be shown. This representation looks like this:

@interface FLKRoute : NSObject

@property (nonatomic) FLKRouteType type;
@property (nonatomic, copy) NSString *identifier;

@end

It describes the type of data to present, and a unique identifier for that type of data.

- (void)navigateToRoute:(FLKRoute *)route
{
    switch (route.type) {
        case FLKRouteTypePhoto:
            // Navigate to photo screen
            break;
        case FLKRouteTypeAlbum:
           // Navigate to album screen
            break;
        case FLKRouteTypeGroup:
            // Navigate to group screen
            break;
        // ...
        default:
            break;
    }
}

Now, all we have to do is to make sure we are able to translate both NSURLs and NSUserActivity objects into FLKRoute instances. For NSURLs, this translation is straightforward. Our custom URLs follow the same pattern as the corresponding website URLs; their paths correspond exactly. So translating both website URLs and custom URLs is a matter of using NSURLComponents to extract the necessary information to create the FLKRoute object.

As for NSUserActivity objects passed into application:continueUserActivity:restorationHandler:, there are two cases. One arises when the NSUserActivity instance was used to index a public item in the app. Remember that when we created the NSUserActivity object we also assigned its webpageURL? This is really handy because it not only uniquely identifies the data we want to present, but also gives us a NSURL object, which we can handle the same way we handle deep links or Universal Links.

The other case is when the NSUserActivity originated from a CSSearchableItem; we have some more work to do in this case. We need to parse the identifier we created for the item and translate it into a FLKRoute. Remember that our item’s identifier is a combination of its type and the model ID. We can decompose it and then create our route object. Its simplified implementation looks like this:

FLKRoute * FLKRouteFromSearchableItemIdentifier(NSString *searchableItemIdentifier)
{
    NSArray *routeComponents = [searchableItemIdentifier componentsSeparatedByString:@"/"];
    if ([routeComponents count] != 2) { // type + id
        return nil;
    }
    
    // Handle the route type
    NSString *searchableItemContentType = [routeComponents firstObject];
    FLKRouteType type = FLKRouteTypeFromSearchableItemContentType(searchableItemContentType);
    
    // Get the item identifier
    NSString *itemIdentifier = [routeComponents lastObject];
    
    // Build the route object
    FLKRoute *route = [FLKRoute new];
    route.type = type;
    route.parameter = itemIdentifier;
    
    return route;
}

Now we have all our bases covered and we’re sure that we’ll drop the user in the right place when she lands in our app. The final application delegate method looks like this:

- (BOOL)application:(nonnull UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray * __nullable))restorationHandler
{
    FLKRoute *route;
    NSString *activityType = [userActivity activityType];
    NSURL *url;
    
    if ([activityType isEqualToString:CSSearchableItemActionType]) {
        // Searchable item from Core Spotlight
        NSString *itemIdentifier = [userActivity.userInfo objectForKey:CSSearchableItemActivityIdentifier];
        route = FLKRouteFromSearchableItemIdentifier(itemIdentifier);
        
    } else if ([activityType isEqualToString:@"FLKSearchableUserActivityType"] ||
               [activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
        // Searchable item from NSUserActivity or Universal Link
        url = userActivity.webpageURL;
        route = [url flk_route];
        
    }
    
    if (route) {
        [self.router navigateToRoute:route];
        return YES;
    } else if (url) {
        [[UIApplication sharedApplication] openURL:url]; // Fail gracefully
        return YES;
    } else {
        return NO;
    }
}

3D Touch

With the release of iPhone 6S and iPhone 6S Plus, Apple introduced a new gesture that can be used with your iOS app: 3D Touch. One of the coolest features it has brought is the ability to preview content before pushing it onto the navigation stack. This is also known as “peek and pop.”

You can easily see how this feature is implemented in the native Mail app. But you won’t always have a simple UIView hierarchy like Mail’s UITableView, where a tap anywhere on a cell opens a UIViewController. Take Flickr’s notifications screen, for example:

4.0-04-core-five-notifications

If the user taps on a photo in one of these cells, it will open the photo view. But if the user taps on another user’s name, it will open that user’s profile view. Previews of these UIViewControllers should be shown accordingly. But the “peek and pop” mechanism requires you to register a delegate on your UIViewController with registerForPreviewingWithDelegate:sourceView:, which means that you’re working in a much higher layer. Your UIViewController’s view might not even know about its subviews’ structures.

To solve this problem, we used UIView’s method hitTest:withEvent:. As the documentation describes, it will give us the “farthest descendant of the receiver in the view hierarchy.” But not every hitTest will necessarily return the UIView that we want. So we defined a protocol, FLKPeekAndPopTargetView, that must be implemented by any UIView subclass that wants to support peeking and popping from it. That view is then responsible for returning the model used to populate the UIViewController that the user is trying to preview. If the view doesn’t implement this protocol, we query its superview. We keep checking for it until a UIView is found or there aren’t any more superviews available. This is how this logic looks:

+ (id)modelAtLocation:(CGPoint)location inSourceView:(UIView*)sourceView
    
    // Walk up hit-test tree until we find a peek-pop target.
    UIView *testView = [sourceView hitTest:location withEvent:nil];
    id model = nil;
    while(testView && !model) {
      
        // Check if the current testView conforms to the protocol.
        if([testView conformsToProtocol:@protocol(FLKPeekAndPopTargetView)]) {
            
            // Translate location to view coordinates.
            CGPoint locationInView = [testView convertPoint:location fromView:sourceView];
            
            // Get model from peek and pop target.
            model = [((id<FLKPeekAndPopTargetView>)testView) flk_peekAndPopModelAtLocation:locationInView];
            
        } else {
            //Move up view tree to next view
            testView = testView.superview;
        }
    }
    
    return model;
}

With this code in place, all we have to do is to implement UIViewControllerPreviewingDelegate methods in our delegate, perform the hitTest and take the model out of the FLKPeekAndPopTargetView‘s implementor. Here’s is the final implementation:

- (UIViewController *)previewingContext:(id<UIViewControllerPreviewing>)previewingContext
              viewControllerForLocation:(CGPoint)location {
    
    id model = [[self class] modelAtLocation:location inSourceView:previewingContext.sourceView];
    UIViewController *viewController = nil;
    if ([model isKindOfClass:[FLKPhoto class]]) {
        viewController = // ... UIViewController that displays a photo.
    } else if ([model isKindOfClass:[FLKAlbum class]]) {
        viewController = // ... UIViewController that displays an album.
    } else if ([model isKindOfClass:[FLKGroup class]]) {
        viewController = // ... UIViewController that displays a group.
    } // ...
    return viewController;
    
}

- (void)previewingContext:(id<UIViewControllerPreviewing>)previewingContext
     commitViewController:(UIViewController *)viewControllerToCommit {
    
    [self.navigationController pushViewController:viewControllerToCommit animated:YES];
    
}

Last but not least, we added support for Quick Actions. Now the user has the ability to quickly jump into a specific section of the app just by pressing down on the app icon. Defining these Quick Actions statically in the Info.plist file is an easy way to implement this feature, but we decided to go one step further and define these options dynamically. One of the options we provide is “Upload Photo,” which takes the user to the asset picker screen. But if the user has Auto Uploadr turned on, this option isn’t that relevant, so instead we provide a different app icon menu option in its place.

Here’s how you can create Quick Actions:

NSMutableArray<UIApplicationShortcutItem *> *items = [NSMutableArray array];
    
[items addObject:[[UIApplicationShortcutItem alloc] initWithType:@"FLKShortcutItemFeed"
                                                  localizedTitle:NSLocalizedString(@"Feed", nil)]];
    
[items addObject:[[UIApplicationShortcutItem alloc] initWithType:@"FLKShortcutItemTakePhoto"
                                                  localizedTitle:NSLocalizedString(@"Upload Photo", nil)] ];

[items addObject:[[UIApplicationShortcutItem alloc] initWithType:@"FLKShortcutItemNotifications"
                                                  localizedTitle:NSLocalizedString(@"Notifications", nil)]];
    
[items addObject:[[UIApplicationShortcutItem alloc] initWithType:@"FLKShortcutItemSearch"
                                                  localizedTitle:NSLocalizedString(@"Search", nil)]];
    
[[UIApplication sharedApplication] setShortcutItems:items];

And this is how it looks like when the user presses down on the app icon:

IMG_0344

Finally, we have to handle where to take the user after she selects one of these options. This is yet another place where we can make use of our FLKRoute object. To handle the app opening from a Quick Action, we need to implement application:performActionForShortcutItem:completionHandler: in the app delegate.

- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler {
    FLKRoute *route = [shortcutItem flk_route];
     [self.router navigateToRoute:route];
    completionHandler(YES);
}

Conclusion

There is a lot more to consider when shipping these features with an app. For example, with Flickr, there are various platforms the user could be using. It is important to make sure that the Spotlight index is up to date to reflect changes made anywhere. If the user has created a new album and/or left a group from his desktop browser, we need to make sure that those changes are reflected in the app, so the newly-created album can be found through Spotlight, but the newly-departed group cannot.

All of this work should be totally opaque to the user, without hogging the device’s resources and deteriorating the user experience overall. That requires some considerations around threading and network priorities. Network requests for UI-relevant data should not be blocked because we have other network requests happening at the same time. With some careful prioritizing, using NSOperationQueue and NSURLSession, we managed to accomplish this with no major problems.

Finally, we had to consider privacy, one of the pillars of Flickr. We had to be extremely careful not to violate any of the user’s settings. We’re careful to never publicly index private content, such as photos and albums. Also, photos marked “restricted” are not publicly indexed since they might expose content that some users might consider offensive.

In this blog post we went into the basics of integrating iOS 9 Search, Universal Links, and 3D Touch in Flickr for iOS. In order to focus on those features, we simplified some of our examples to demonstrate how you could get started with them in your own app, and to show what challenges we faced.

Flickr September 2014

Like this post? Have a love of online photography? Want to work with us? Flickr is hiring mobile, back-end and front-end engineers, in our San Francisco office. Find out more at flickr.com/jobs.

#####EOF##### Heron TP UAV.jpg | (PresseBox) Heron TP UAV www.pressebox.de… | Flickr new icn messageflickr-free-ic3d pan white
Heron TP UAV.jpg | by PresseBox.de flickr
#####EOF##### Flickr Blog

Flickr가 20under20에 선정된 실력이 뛰어난 젊은 사진작가들을 ì¶•하합니다

사진은 우리를 매료시키거나 영감을 줄 뿐만 아니라 세상을 바라보고 이해하는 관점을 바꾸기도 합니다. Flickr는 회원 커뮤니티를 통해 이러한 작가들을 지지합니다. 오늘 첫 번째 연례 Flickr 20under20을 발표하게 되어 기쁩니다.

Apple TV에서 즐기는 새로운 Flickr 경험 ì†Œê°œ

Apple TV의 새로운 Flickr 서비스는 대형 화면에 여러분의 모든 사진을 생생하게 담아냅니다. 이 화면에서는 Flickr 커뮤니티와 교류하고, 세상에서 가장 흥미로운 사진을 탐색하고, 엄청난 온라인 사진 콜렉션 내에서 수십억 장의 사진을 찾아볼 수 있는 강력한 검색 기능을 사용할 수 있습니다.

#Flickr10 | 5월 4일, 글로벌 Flickr 포토 워크의 ë‚ 

Flickr 탄생 10주년을 축하하기 위해 저희는 글로벌 Flickr 포토 워크의 날을 학수고대하고 있습니다! 신규 및 기존의 Flickr 담당자를 모집하고, 우리 주변의 세계를 문서로 기록하여 최고의 […]

2013년 최고 사진

회원님의 올해 “최고” 사진을 저희와 함께 공유하여 저희 연례 행사에 참가해 주세요. 회원님의 한 해를 돌아보고 2013년 최고 사진에서 사진을 공유해주세요. 사진 작가로서 성장한 자신의 […]

ê³§ 2013년 최고 사진 이벤트가 ì‹œìž‘됩니다.

2007년에 시작되었던 FlickrCentral 토론이 이렇게 멋진 연례 이벤트인 여러분의 최고 사진으로 거듭났습니다. 저희는 현재 본 이벤트의 막바지 준비 단계에 있습니다. 사진 선택이 가장 어려운 작업이므로 […]

iOS에 대한 자동 업로드, 자동 수평조절 ì†Œê°œ

Flickr에서 원하는 순간을 캡처하는 것이 얼마나 중요한지 알고 있습니다. iPhone 및 iPod Touch에 대한 Flickr용 신제품 카메라를 포함하여 몇몇 마지막 업데이트는 퍼펙트 샷(Perfect Shot) 설정을 […]

운영 중지 시간 ì•Œë¦¼!

다음 주 목요일 및/또는 금요일(사용자의 표준 시간대에 따라 달라짐)에 예정된 서버 정비로 인해 Flickr를 사용할 수 없음을 알려 드립니다. 서버 중단은 태평양 연안 표준시(UTC -7)로 […]

Flickr의 새로운 카메라 기능을 소개합니다! 라이브 필터, 맞춤식 필터, 고급 편집 도구가 추가된 새로운 iOS용 Flickr를 ë§Œë‚˜ë³´ì„¸ìš”.

콘서트를 보러 갈 때나 가족들과 집에서 시간을 보낼 때 우리는 모두 사진을 즐겨 찍습니다. Flickr는 삶의 중요한 순간을 포착하고 공유하기 위한 최고의 도구를 여러분께 제공하고자 […]

그룹을 위한 새로운 ë””자인

오늘 새로운 그룹 디자인의 출시를 발표하게 되어 매우 기쁩니다. 업데이트를 통해, 그룹 디자인이 5월에 대대적으로 실시된 Flickr의 변경된 디자인과 좀더 일관성을 가지도록 했습니다. 새 그룹은 […]

아름다운 사진과 함께 날씨를 ì¦ê¸°ì„¸ìš”

파라과이의 일출에서 스위스의 폭풍 번개와 암스테르담에 내리는 눈에 이르기까지 많은 Flickr 회원들이 전 세계의 날씨 상태를 아름다운 사진에 담았습니다. 이제 새로운 Yahoo! 날씨 앱으로 iPhoneê³¼ […]

iPhone용 Flickr의 새로운 기능: 친구 언급하기, 사진 다운로드, 더욱 빠른 업로드 등 많은 훌륭한 기능을 ì¦ê¸°ì„¸ìš”!

새 iPhone 앱의 최신 업데이트에는 사용자 여러분이 요구하신 많은 기능이 들어 있습니다. 편리하게 대화를 시작하세요! 이제 앱에서 바로 친구를 언급할 수 있습니다. 제목, 설명 또는 […]

#####EOF##### Flickr Blog

Ecco a voi Flickr su Apple TV

Il nuovo servizio di Flickr per Apple TV dà vita alle tue foto su grande schermo, dove potrai comunicare con la community di Flickr, esplorare le foto provenienti da tutto il mondo e utilizzare la funzionalità di ricerca per navigare tra le tantissime foto della più grande e straordinaria raccolta online al mondo.

#####EOF##### Flickr Blog | Page 2

We Can’t Stand Spam Either

We’ve been fighting spam for some time now. And thanks to our recent acquisition by SmugMug, we have new resources that are helping us take stronger action and make significant progress on this front.

#####EOF##### Flickr Blog

Flickr가 20under20에 선정된 실력이 뛰어난 젊은 사진작가들을 ì¶•하합니다

사진은 우리를 매료시키거나 영감을 줄 뿐만 아니라 세상을 바라보고 이해하는 관점을 바꾸기도 합니다. Flickr는 회원 커뮤니티를 통해 이러한 작가들을 지지합니다. 오늘 첫 번째 연례 Flickr 20under20을 발표하게 되어 기쁩니다.

Apple TV에서 즐기는 새로운 Flickr 경험 ì†Œê°œ

Apple TV의 새로운 Flickr 서비스는 대형 화면에 여러분의 모든 사진을 생생하게 담아냅니다. 이 화면에서는 Flickr 커뮤니티와 교류하고, 세상에서 가장 흥미로운 사진을 탐색하고, 엄청난 온라인 사진 콜렉션 내에서 수십억 장의 사진을 찾아볼 수 있는 강력한 검색 기능을 사용할 수 있습니다.

#Flickr10 | 5월 4일, 글로벌 Flickr 포토 워크의 ë‚ 

Flickr 탄생 10주년을 축하하기 위해 저희는 글로벌 Flickr 포토 워크의 날을 학수고대하고 있습니다! 신규 및 기존의 Flickr 담당자를 모집하고, 우리 주변의 세계를 문서로 기록하여 최고의 […]

2013년 최고 사진

회원님의 올해 “최고” 사진을 저희와 함께 공유하여 저희 연례 행사에 참가해 주세요. 회원님의 한 해를 돌아보고 2013년 최고 사진에서 사진을 공유해주세요. 사진 작가로서 성장한 자신의 […]

ê³§ 2013년 최고 사진 이벤트가 ì‹œìž‘됩니다.

2007년에 시작되었던 FlickrCentral 토론이 이렇게 멋진 연례 이벤트인 여러분의 최고 사진으로 거듭났습니다. 저희는 현재 본 이벤트의 막바지 준비 단계에 있습니다. 사진 선택이 가장 어려운 작업이므로 […]

iOS에 대한 자동 업로드, 자동 수평조절 ì†Œê°œ

Flickr에서 원하는 순간을 캡처하는 것이 얼마나 중요한지 알고 있습니다. iPhone 및 iPod Touch에 대한 Flickr용 신제품 카메라를 포함하여 몇몇 마지막 업데이트는 퍼펙트 샷(Perfect Shot) 설정을 […]

운영 중지 시간 ì•Œë¦¼!

다음 주 목요일 및/또는 금요일(사용자의 표준 시간대에 따라 달라짐)에 예정된 서버 정비로 인해 Flickr를 사용할 수 없음을 알려 드립니다. 서버 중단은 태평양 연안 표준시(UTC -7)로 […]

Flickr의 새로운 카메라 기능을 소개합니다! 라이브 필터, 맞춤식 필터, 고급 편집 도구가 추가된 새로운 iOS용 Flickr를 ë§Œë‚˜ë³´ì„¸ìš”.

콘서트를 보러 갈 때나 가족들과 집에서 시간을 보낼 때 우리는 모두 사진을 즐겨 찍습니다. Flickr는 삶의 중요한 순간을 포착하고 공유하기 위한 최고의 도구를 여러분께 제공하고자 […]

그룹을 위한 새로운 ë””자인

오늘 새로운 그룹 디자인의 출시를 발표하게 되어 매우 기쁩니다. 업데이트를 통해, 그룹 디자인이 5월에 대대적으로 실시된 Flickr의 변경된 디자인과 좀더 일관성을 가지도록 했습니다. 새 그룹은 […]

아름다운 사진과 함께 날씨를 ì¦ê¸°ì„¸ìš”

파라과이의 일출에서 스위스의 폭풍 번개와 암스테르담에 내리는 눈에 이르기까지 많은 Flickr 회원들이 전 세계의 날씨 상태를 아름다운 사진에 담았습니다. 이제 새로운 Yahoo! 날씨 앱으로 iPhoneê³¼ […]

iPhone용 Flickr의 새로운 기능: 친구 언급하기, 사진 다운로드, 더욱 빠른 업로드 등 많은 훌륭한 기능을 ì¦ê¸°ì„¸ìš”!

새 iPhone 앱의 최신 업데이트에는 사용자 여러분이 요구하신 많은 기능이 들어 있습니다. 편리하게 대화를 시작하세요! 이제 앱에서 바로 친구를 언급할 수 있습니다. 제목, 설명 또는 […]

#####EOF##### FlickrFriday | Flickr Blog

Flickr Friday – Rush

We made it, Flickr fam. Happy Friday! It came by so fast considering everyone was in a #Rush with this week’s theme. Let’s find out […]

Flickr Friday – Dream

Flickr Friday has arrived. Thank you for your fabulous #Dream themed submissions from the past week’s challenge! Shout out to the people who just submitted […]

Flickr Friday – 100 Percent

Happy finally-it’s-Flickr-Friday day. Hhere’s the selection of our favorite submissions from the past week’s challenge! Doesn’t not having a spring break make going back to […]

#####EOF##### 20170503_Illkirch_Auwahl_008 | ILLKIRCH/FRANKREICH 03MAI2017… | Flickr new icn messageflickr-free-ic3d pan white
20170503_Illkirch_Auwahl_008 | by thomas_wiegold
#####EOF##### Flickr Blog

Flickr tôn vinh những nhiếp ảnh gia trẻ xuất sắc với 20under20

Nhiếp ảnh có khả năng mê hoặc, truyền cảm hứng và thậm chí thay đổi cách chúng ta nhìn nhận và hiểu về thế giới xung quanh mình. Tại Flickr, chúng tôn vinh điều này cùng với cộng đồng người dùng của mình. Hôm nay, chúng tôi rất vui mừng được thông báo sự kiện Flickr 20under20 hàng năm đầu tiên.

Giới thiệu trải nghiệm Flickr mới trên Apple TV

Dịch vụ mới của Flickr cho Apple TV tái hiện chân thực và sắc nét các hình ảnh của bạn trên màn hình lớn, nơi bạn có thể tham gia vào cộng đồng Flickr, khám phá các hình ảnh thú vị nhất trên thế giới và sử dụng khả năng tìm kiếm mạnh mẽ của chúng tôi để duyệt xem hàng tỷ bức ảnh trong bộ sưu tập ảnh trực tuyến hoành tráng nhất trên thế giới.

#####EOF##### The Pentagon | Taken from a commercial plane, September 2018… | Wiyre Media | Flickr new icn messageflickr-free-ic3d pan white
The Pentagon | by wiyre.com
Back to photostream

The Pentagon

Taken from a commercial plane, September 2018

134 views
0 faves
0 comments
Uploaded on September 9, 2018
#####EOF##### ISAF Einsatz | Internationale Sicherheitsunterstützungstrupp… | Flickr new icn messageflickr-free-ic3d pan white
ISAF Einsatz | by Offizieller Auftritt der Bundeswehr
#####EOF##### Silent journey | Find more photos at: www.thomasfairbankphot… | Flickr new icn messageflickr-free-ic3d pan white
Silent journey | by Explorer151
Back to photostream

Silent journey

Find more photos at: www.thomasfairbankphotography.com

 

All Rights Reserved. Copyright 2018 © Thomas Fairbank

5,472 views
235 faves
44 comments
Uploaded on August 12, 2018
#####EOF##### Flickr Blog

Painting with Light

English photographer Tim Gamble has always liked things that are different. His interest in light painting—a form of long exposure photography that creates colorful images by moving a hand-held light source—started seven years ago, when he came across a tiny section dedicated to the art of light drawing in his newly-purchased digital photography book.

#####EOF##### Painting with Light | Flickr Blog

Painting with Light

From there, Tim began to Google more and more about it, and what started off as curiosity, eventually turned into a passion. The documentary “Ball of Light,” on Vimeo, was his first major source of inspiration.

Firstborn.  50-365

Tim has done about four 365 projects in the past six years, shooting daily. “Light painting is, for me, the ultimate form of creativity. If you can visualize something in your imagination there will be a way to achieve this with your camera,” he said. But being an experienced photographer didn’t save Tim from having his 500px account deleted for “posting non-photographing content.” A few weeks ago, the photo-sharing site mistakenly classified his images as “illustrations,” and suspended his (now reinstated) profile without notice. The incident had a positive outcome though. Tim says the media attention gained from the incident has brought light painting to a wider audience. “It’s also a huge compliment from a personal perspective, as I always strive to produce believable work, so I guess I’m doing something right.”

Flickr’s light painting community was another big source of learning for Tim during his earlier days in photography, particularly the shots and conversations in the Light Junkies and Optical Nirvana groups. “I’d sit for hours trying to dissect each shot to get my head around how each effect had been achieved. This is what drove me to improve and keep pushing the boundaries of what is possible during that long exposure.”

Event Horizon.  362-366

What’s amazing about his photos is that the majority of his work is done totally in-camera. “I use many techniques and tools to achieve my images, first and foremost is camera rotation. After seeing work by TCB, Dan Whitaker, LED Eddie, and Mart Barras, I wondered how they had twisted reality in such a way. Camera rotation was the answer. You place your camera on a rig which allows you to rotate the camera around the axis of the lens.”

Tim uses other techniques, such as refractography or lens and tripod swapping, to achieve that unusual, surreal effect. “More recently Hugo Baptista very kindly shared a number of 3D cross section videos which are really fun to use. He takes a 3D image and cuts it into cross sections on his computer. He then converts this into a kind of 3D scan that plays on a loop. I play these on my phone whilst rotating or panning my camera, and the original 3D image comes back to life.”

Made of Stone.  215-366.

Tim, who recently became a brand ambassador for Light Painting Brushes, says one of the fun aspects of light painting is the fact that the artist gets to create their own tools, using LED lights, acrylics, holographic cards, and any other tool that reflects or emits light. For beginners, he recommends starting with a few basics: a tripod to keep things steady, a camera capable of bulb mode, a wired or wireless trigger, a bright torch, dark clothing so as to not appear in the frame, and a dark location to allow for long exposures. But, the most important thing, he says, is “to have a good imagination.”

Forced Light.  38-365

If you’re into light painting, be sure to follow Tim Gamble. Flickr is where he got started as a photographer. “I love Flickr due to it being the place I found a wider community of like-minded people from around the globe. It also introduced me to my favorite shooting buddy, Chris Thompson, from just over the Pennines in Sheffield. Without his ideas, skills, patience and kind-heartedness most of my favorite light painting images would not exist, and that is all down to a chance meeting on this wonderful platform.”

You may also want to follow the Light Painting Community Flickr group, a place where both experienced and beginner light painters can post their photos and share ideas.

#####EOF##### Submit Your Flickr Story! | Flickr Blog

Submit Your Flickr Story!

#####EOF##### Flickr Blog
#####EOF##### Timothy Vollmer | Flickr new icn messageflickr-free-ic3d pan white

Drag to set position!

Timothy Vollmer

1 3 4 5 6 7 ••• 116 117
#####EOF##### Introducing your new one-stop, curation station. | Flickr Blog

Introducing your new one-stop, curation station.

+ organizational tool

When you’re in inspiration mode, scrolling through Flickr, soaking in the incredible shots from photographers around the world, and getting lost in the literal billions of eye-popping, jaw-dropping photographs from your communities, it can feel like a burden to open tab after tab of individual photos just to add them to galleries, albums, and groups.

It was time for a reappraisal of sorts. Organizing all the photographs you find inspiring needs to be easy. Really easy. So we built a new way to add all your favorite content to galleries, albums, and groups in one centralized tool from any photo context on Flickr.

All photos on Flickr, wherever you come across them, will now have a new icon with a + that allows you to access a new menu of actions. When you’re looking at photos from other Flickr members, the + will allow you to add that photo to any of your own galleries or if you’re a group admin, invite the photograph’s owner to add that picture to your group. If you’re looking at your own photos, the + will allow you to add your photographs to any of your albums or quickly submit your photo to the groups you are a part of.

+ organizational tool (2)

We’re all about supercharging your Flickr browsing experience and this is just one of many awesome updates we have planned to make organizing and curating your Flickr experience quick and easy.

We’re rolling out the new feature over the next few days, so if you don’t have it yet, hang tight, we’ll release it to you soon.

#####EOF##### vlasta2 | Flickr new icn messageflickr-free-ic3d pan white

Drag to set position!

vlasta2

1 3 4
#####EOF##### campact | Flickr new icn messageflickr-free-ic3d pan white

Drag to set position!

campact

1 3 4 5 6 7 ••• 131 132
#####EOF##### Flickr Blog

Painting with Light

English photographer Tim Gamble has always liked things that are different. His interest in light painting—a form of long exposure photography that creates colorful images by moving a hand-held light source—started seven years ago, when he came across a tiny section dedicated to the art of light drawing in his newly-purchased digital photography book.

#####EOF##### Photographer Spotlight | Flickr Blog

Painting with Light

English photographer Tim Gamble has always liked things that are different. His interest in light painting—a form of long exposure photography that creates colorful images by moving a hand-held light source—started seven years ago, when he came across a tiny section dedicated to the art of light drawing in his newly-purchased digital photography book.

The Atmosphere of Light

Ross Buswell’s landscape photography has caused quite a large amount of attention on Flickr. He has gone by the name ‘Atmospherics’ since he first started […]

Abandoned Architecture

Matthew Hampshire focuses on abandoned architecture photography. From barren seasides and deserted homes to plane wrecks and chapels that have forgotten to be cherished, Matthew captures what it would be like to live in an empty world.

Why Not Now?

Hayden Korr is a yearbook photographer turned photojournalist. As a student survivor at one of the most horrific school shootings in history, she has turned her grief into inspirational political art.

#####EOF##### 24/365 | Snow at the Net | Brenda Gottsabend | Flickr new icn messageflickr-free-ic3d pan white
24/365 | by bgottsab
Back to photostream

24/365

Snow at the Net

871 views
1 fave
2 comments
Taken on January 24, 2013
#####EOF##### Timothy K Hamilton | Flickr new icn messageflickr-free-ic3d pan white

Drag to set position!

Timothy K Hamilton

1 3 4 5 6 7 ••• 11 12
#####EOF##### theweeklyflickr | Flickr Blog

Photographer Finds Inspiration in Everyday Encounters

Street photographer Dijon Bowden may have started as a filmmaker, but when he began the photography project titled Souls of San Francisco, he quickly knew he had found his true calling. Although pictures are his medium, Dijon primarily sees himself forging connections with people that his camera simply makes possible.

Extreme photos at extreme heights

For seven years, Emily Ibarra has traveled the world photographing the death-defying adventures of professional parkour and freerunning athletes. Captured at sites ranging from the Grand Canyon to the Far East, her photos reveal their fearless exploits as they scale skyscrapers, fly across rooftops, and banish fear in precarious poses. Emily loves her job. “It’s exciting. It’s terrifying, and it’s dangerous, and I get to capture that,” she gushes.

Photography as Art Therapy

Photographer Katie Eleanor began cultivating imaginary friends and dream worlds at a young age, and rather than discarding these dreamscapes in her teen years, she took up photography as a way of bringing them to life. When Katie found herself facing mental illness in her early 20s, she drew from the well of inspiration in her work to find healing.

Baltimore Riots: The story behind TIME’s iconic cover

Devin Allen grew up in west Baltimore surrounded by crime, drugs, and murder. Photography offered him not only a means of rediscovering his community’s beauty, but also literally saved his life. Still, he never dreamed that one of his photos would land him on the cover of Time magazine.

#####EOF##### Find your inspiration. | Flickr new icn messageflickr-free-ic3d pan white

Find your inspiration.

Join the Flickr community, home to tens of billions of photos and 2 million groups.

Sign Up
#####EOF##### Flickr Blog
#####EOF##### Celebrating 11 years of The Commons | Flickr Blog

Celebrating 11 years of The Commons

Today marks the 11th anniversary of The Commons – a project that Flickr began to provide cultural institutions, such as libraries, museums, and historical societies, with a space to share their digital collections with people around the world.

The Commons was launched on January 16, 2008, when Flickr released its pilot project in partnership with The Library of Congress. The two main objectives of the program were to increase discovery and use of publicly-held photography collections and to provide a way for the general public to contribute knowledge through user-generated content (by adding tags, comments, and notes to these historical collections).

In honor of the tremendous growth of this now-11-year-old project, and the 115 participating institutions that have joined so far, we’ve created a gallery featuring the images from the Library of Congress (and other Commons member accounts) with the highest number of community-generated tags. Check out the full gallery here.

Here’s a sneak peek.

Soldier's goodbye & Bobbie the cat, Sydney, ca. 1939-ca. 1945 / by Sam Hood
Unidentified soldier of the First AIF
Operating a hand drill at Vultee-Nashville, woman is working on a "Vengeance" dive bomber, Tennessee  (LOC)
Women are trained to do precise and vital engine installation detail in Douglas Aircraft Company plants, Long Beach, Calif.  (LOC)

With 70,400 followers and 33,021 photos uploaded to Flickr, the Library of Congress continues to be one of the largest and most active accounts from The Commons catalog. To celebrate, they are sharing 11 photos related in some way to the number 11 to a new Flickr album focused on the 11th anniversary of The Commons. They’re posting on the ‘Picture this blog’ site as well!

Over the years, the Library of Congress has identified and deciphered the story behind many of the images from its catalog thanks to the expertise and research skills of hundreds of Flickr users. Therefore, we want to take this opportunity to give a special shout-out to users like Art Siegel, Kilted Cowboy, budderflyman, and many other frequent commenters in the community who have been active on the Library of Congress account for years, helping to flesh out names of subjects and providing historical context. Thank you all for your dedication!

If you’re interested in supporting The Commons, please be sure to join the Flickr Commons group, a place for The Commons community to share and discuss the truly awesome collections being made available in The Commons.

#####EOF##### We’re ready for more. Submit to Your Best Shot 2018 now. | Flickr Blog

We’re ready for more. Submit to Your Best Shot 2018 now.

Haven’t submitted yet?

Your Best Shot 2018 is in full swing: we’ve already received thousands of stunning submissions—photos that made you smile, cry, and grow. Check them out here. Haven’t submitted yet? You still have plenty of time to join in on the celebration: submit your single best shot of 2018 by January 7, 2019. Five winners will each receive a Peak Design Everyday Backpack, a SmugMug Pro subscription, and lots of exposure on Flickr social media channels. Keep in mind, the sooner you submit to the Group, the more exposure your photos will get.

Your Best Shot 2018 - Prizes

Have questions about how we’re celebrating with your photos? Visit our FAQs page in the Your Best Shot 2018 Group and read the contest rules before submitting.

We are highlighting some of our favorite shots from the group across various themes, and these are some of the best Wildlife and Portrait photos posted so far.

Cheers!
The Flickr Team

#####EOF##### All sizes | Ministerpräsident Horst Seehofer, Landshuter Hochzeit | Flickr - Photo Sharing!

Photo / All sizes

License
AttributionShare Alike Some rights reserved by Giorgio Montersino
Download
Download the Large 1600 size of this photo (All sizes of this photo are available for download under a Creative Commons license)
Sizes
    1. Square 75 (75 x 75)
    2. Square 150 (150 x 150)
    3. Thumbnail (100 x 67)
    1. Small 240 (240 x 160)
    2. Small 320 (320 x 213)
    1. Medium 500 (500 x 333)
    2. Medium 640 (640 x 427)
    3. Medium 800 (800 x 534)
    1. Large 1024 (1024 x 683)
    2. Large 1600 (1600 x 1067)
    1. Original (1600 x 1067)
#####EOF##### tw20190204-278 | RUKLA/LITAUEN 04feb2019 - Kommandoübergabe … | Flickr new icn messageflickr-free-ic3d pan white
tw20190204-278 | by thomas_wiegold
#####EOF##### Image from page 405 of "The fireside university of modern … | Flickr new icn messageflickr-free-ic3d pan white
Image from page 405 of "The fireside university of modern invention, discovery, industry and art for home circle study and entertainment" (1902) | by Internet Archive Book Images
Back to photostream

Image from page 405 of "The fireside university of modern invention, discovery, industry and art for home circle study and entertainment" (1902)

Identifier: firesideuniversi01mcgo

Title: The fireside university of modern invention, discovery, industry and art for home circle study and entertainment

Year: 1902 (1900s)

Authors: McGovern, John. [from old catalog]

Subjects: Science

Publisher: Chicago, Union pub. house

Contributing Library: The Library of Congress

Digitizing Sponsor: The Library of Congress

 

 

View Book Page: Book Viewer

About This Book: Catalog Entry

View All Images: All Images From Book

 

Click here to view book online to see this illustration in context in a browseable online version of this book.

 

 

Text Appearing Before Image:

is not uncommonto employ 500 yards of silk in a single skirt, which does not then 366 THE FIRESIDE UNIVERSITY appear u full on the wearer. To develop this fabric towardthe full possibilities of the silken fibre, for theatrical purposes,has been the study of managers, and even Mr. Edisons talentand advice have been sought. It is said of the women of theGreek island of Cos, that they clothed themselves in silkengarments that were of almost incredible thinness. It is believedthat the Chinese weavers will be set at work on fabrics for skirt-dancers that will be made from the original filament as it leavesthe silk-worms mouth, but scoured of one-quarter of its weight.In this way a thousand yards of Cloth might weigh but afew ounces. How old is the Loom ? The loom for plain weaving is represented in the Egyptianmonumental paintings and on Greek vases. We have, in Recordsof the Pasty vol. 3, p. 151, the following, where the poet bewailsthe misery of the little laborer: The weaver, inside the

 

Text Appearing After Image:

Fig. 137. LOOM 500 YEARS B. C, SHOWING BEAM, WITH THREADS HANGINGOPEN—FROM A GREEK VASE—PENELOPE. houses, is more wretched than a woman ; his knees are at theplace of his heart; he has not tasted the air. Should he have CLOTHES, ETC. 367 done but a little in a day, of his weaving, he is dragged as a lilyin a pool. He gives bread to the porter at the door that he maybe allowed to see the light. This poem may be 5,000 years old. How did the Loom evolve ? The frame first held only the warp, which possibly hung be-tween two trees. Then it was placed vertically before the weaveron a frame, and the Turks still prefer to make their often beau-tiful and always valuable and durable woolen fabrics in thismanner. A Turkish weaver stitching with needlefuls of his rflUHKfli,

 

 

Note About Images

Please note that these images are extracted from scanned page images that may have been digitally enhanced for readability - coloration and appearance of these illustrations may not perfectly resemble the original work.

1,286 views
0 faves
0 comments
Taken circa 1902
#####EOF##### 160609-F-QS677-350 | BALTIC SEA (June 9, 2016) A United Stat… | Flickr new icn messageflickr-free-ic3d pan white
160609-F-QS677-350 | by CNE CNA C6F
#####EOF##### Flickr | Flickr new icn messageflickr-free-ic3d pan white

Drag to set position!

Flickr

1 3 4 5 6 7 ••• 9 10
#####EOF##### Update on Creative Commons licenses and “In Memoriam” accounts. | Flickr Blog

Update on Creative Commons licenses and “In Memoriam” accounts.

Welcome 28mm

Today, we’re pleased to announce two important updates that deepen Flickr’s commitment to our members and to the worldwide photography community.

All public Creative Commons works on Flickr are now protected from deletion.

Creative Commons licenses have been an important part of Flickr since we introduced them on our platform in 2004. We’ve made it simple for Flickr members to license any photos in their account under any of the Creative Commons licenses and designations, which has resulted in Flickr being the largest single repository of freely licensed material anywhere in the world. We now host more than 500 million public CC-licensed works, with many more uploaded every day.

When we recently announced updates to Flickr Free accounts, we stated that freely licensed public photos (Creative Commons, public domain, U.S. government works, etc.) as of November 1, 2018 in excess of the free account limit would not be deleted. We wanted to make sure we didn’t disrupt the hundreds of millions of stories across the global internet that link to freely licensed Flickr images. We know the cost of storing and serving these images is vastly outweighed by the value they represent to the world.

In this spirit, today we’re going further and now protecting all public, freely licensed images on Flickr, regardless of the date they were uploaded. We want to make sure we preserve these works and further the value of the licenses for our community and for anyone who might benefit from them.

In conjunction with this announcement, we’ve disabled bulk license change tools in the Settings, the Camera Roll, and the Organizr for Flickr Free accounts. We’ve done this to prevent community members from flipping all their images to a new license without first understanding the significant implications of the various free licenses we support. Any member (Free or Pro) can still change the license of any of their photos on the photo page.

We’ve supported Creative Commons for as long as we’ve been around and we’re thrilled to do so for newly-uploaded content as well.

“In memoriam” accounts for deceased members.

Since we announced changes to Flickr’s Free and Pro accounts on November 1, we’ve heard from members who are concerned about what will happen to accounts owned by deceased members, and what will happen to their own accounts when they die. We’re photography lovers here at Flickr, too, and we love the idea of photographers’ legacies living on in memoriam—that’s why we’re pleased to announce today that we’re offering “in memoriam” accounts to existing Flickr members who have passed away.

In memoriam accounts will preserve all public content in a deceased member’s account, even if their Pro subscription lapses. The account’s username will be updated to reflect the “in memoriam” status and login for the account be locked, preventing anyone from signing in.

We’d love your help to identify any existing accounts that deserve in memoriam status so we can make sure their contributions to the community are preserved. To nominate an account, please read this article in the Flickr Help Center. If our Support Heroes can verify the required details, we will preserve the account in memoriam.

#####EOF##### RAF Chinook Mk3 Helicopter | A Mk 3 Chinook in flight at RAF… | Flickr new icn messageflickr-free-ic3d pan white
RAF Chinook Mk3 Helicopter | by Defence Images
#####EOF##### 20170503_Illkirch_Auwahl_013 | ILLKIRCH/FRANKREICH 03MAI2017… | Flickr new icn messageflickr-free-ic3d pan white
20170503_Illkirch_Auwahl_013 | by thomas_wiegold
#####EOF##### Flickr Blog
#####EOF##### Flickr Blog
#####EOF##### Chihuly glass onions | Chihuly glass onions 3230bps_s | Timothy K Hamilton | Flickr new icn messageflickr-free-ic3d pan white
Chihuly glass onions | by Creativity+ Timothy K Hamilton
Back to photostream

Chihuly glass onions

Chihuly glass onions

 

3230bps_s

6,849 views
27 faves
14 comments
Taken on May 17, 2006
#####EOF##### Flickr Blog
#####EOF##### Fly by of the German MPRA - ESPS Galicia | Fly by of the Ger… | Flickr new icn messageflickr-free-ic3d pan white
Fly by of the German MPRA - ESPS Galicia | by EU Naval Force Media and Public Information Office
#####EOF##### Photography and Licensing: Q&A with Creative Commons CEO Ryan Merkley | Flickr Blog

Photography and Licensing: Q&A with Creative Commons CEO Ryan Merkley

Since 2004, Flickr has been a proud supporter of Creative Commons, a licensing system that gives photographers and creators the ability to share and distribute their works on conditions of their choice. Today, people can find hundreds of millions of public images released under Creative Commons licenses on our site; we have the honor of being the largest repository of openly licensed works online.

The significance of this massive collection of creative works will always matter to us— and that’s why Flickr continues to work with Creative Commons on ways to cultivate and grow this long-term partnership. We recently met with Ryan Merkley, CEO of Creative Commons, to talk about common goals, reflect on the history of our communities, and discuss future challenges and opportunities. The following is an edited transcript of our conversation.

Creative-Commons-CEO-Interview-5

Why is it important for photography platforms like Flickr to support Creative Commons (CC) licenses?

Merkley: Because photographers want it. If you want to be a platform that gives its users choice, then CC is the most reliable standard for sharing your work under permissive terms. “All Rights Reserved” is the default for every photo from the second it’s taken, but a considerable portion of users and creators want to share, and a CC license gives them the opportunity to do that.

Allowing CC licenses has helped Flickr grow as a community, to the point that we’ve become the largest repository of CC-licensed images. How has the CC community benefited from Flickr’s support?

Merkley: A for-profit company [Flickr] every month spends hundreds of thousands of dollars on bandwidth and storage in order to make these images available to every person who wants them, under these terms. That’s a huge gift to the Commons, to history, to the community, to humanity.

Flickr is one of the most, if not the most, important collections of Creative Commons works online. If we lost that, we’d have to move it somewhere and build a platform that could host it, and serve it up in some other way. That infrastructure is really important. We’ve come to see Flickr as part of the infrastructure of the web, not just a service. It’s part of the core of what we think of as the “open web.”

Why do you think so many people choose Flickr for sharing and accessing Creative Commons images?

Merkley: I think a huge part of the goodwill that exists for Flickr is tied to this notion that it was built around the ideals of sharing and bringing communities together, so it was more than just a photo platform.

Wikipedia and Flickr are part of this old web that people still love, and it’s one of the few for-profit companies that has been able to hold those values through sell after sell. That says something about the people that work at Flickr, about the people who purchased Flickr, about the community that stayed with Flickr.

Flickr takes copyright very seriously, but we believe creators should have the choice to decide the type of license and conditions they wish to apply to their work. What would you say to photographers who criticize the Creative Commons because they think it creates a body of work that competes with their ability to make money?

Merkley: Creative Commons was designed to give authors and creators choice. In an environment where copyright is the default, every creator has to choose to share or not to share.

If a photographer makes a work and they don’t want to share it, they shouldn’t. Creative Commons is not going to come and take their work from them; we never would. We made a set of licenses with different permissions because some photographers were willing to share and only wanted credit, and other photographers were willing to share but also wanted to make sure that they were the only ones who could profit commercially.

Creative-Commons-CEO-Interview-6

Do you believe photographers have a good general understanding of the different types of CC licenses they can apply to their work, and the implications of choosing one of these licenses?

Merkley: I think photographers, more than most creators, have a pretty good grip on their copyright. I think there are nuances of the licenses people don’t quite get. People understand that CC-BY means that “I must give credit,” but they probably get stuck on “what does ‘give credit’ mean?”

A piece of the licenses requires some goodwill and good actors, and when you have bad actors, then people need to work it out. But I can say that over seventeen years of the life of Creative Commons, two things have been consistent: when the licenses are under scrutiny and they go to court, the license terms hold up and the rights of creators are upheld. The number of cases where that’s happened is very few because, most often, people work it out.

The licenses were not supposed to be a big hammer that you hit people with; they’re supposed to enable collaboration.

We often see examples of people, including journalists, who forget to give proper attribution to the photographer, or give attribution to the platform instead. What has CC done over the years to help creators understand the benefits of using an open license and to educate the public on how to properly attribute and use those CC-licensed works?

Merkley: We provide educational materials. We go meet with our partners and do videos in their offices and talk to them about how to do this. In our own products, we’re building a service called CC Search. The idea is to collect all the works of the Commons and provide front-door access to them. We’ve built one-click attribution as well.

Where I’d like to get to is a place where attribution is automatic so that the user doesn’t have to do anything.

Can you tell us more about the Creative Commons Search initiative?

Merkley: CC Search, when it’s completed, will be a collection of the catalog of the Commons online—so 1.4 billion licensed works across 9 million different websites, from Flickr, Wikipedia, Youtube…all the way down to someone’s individual blog. I don’t think we’ll ever get everything, but the idea is to collect the majority of that in a catalog that refers to the various places where those works are located.

The European Parliament has recently voted in favor of the Copyright Directive, which includes the controversial “link tax” and “upload filter,” two proposals you’ve publicly criticized. How do you think this directive would affect creators and platforms like Flickr if given final approval in January?

Merkley: The link tax gives a right to publishers to link to their sites and was designed around journalism businesses’ frustration over Google News, based on an assumption that if they can make money out of those links that Google News offers, they would somehow be viable again.

Unfortunately, we’ve already seen both in Germany and Spain that making laws like that has failed. When, in Spain, Google News shut down their service in response to the restrictions imposed by the government, news websites saw their traffic drop drastically overnight. So whatever advertising those sites were getting from traffic vanished.

The other policy that they would bring in is the upload filtering, which would require every piece of content uploaded to be filtered prior to it being posted. This is meant to deal with what its proponents described as “rampant copyright infringement.” Our sense is that what it mostly does is lock out new players because, in order to do that kind of filtering, you would require AI filters or huge armies of people.

That probably means that only the companies that can afford those filters will have them. And the only companies that have those filters right now are Google and Facebook.

Creative-Commons-CEO-Interview-4

Though we know there will always be new challenges like those proposed by the European Parliament, we at Flickr will continue to work together with Creative Commons to provide photographers with a safe place to share their photos—however they choose. The landscape of sharing online will continue to change, and we’ll continue to adapt and collaborate in order to protect this repository of amazing images.

#####EOF##### Flickr Blog
#####EOF##### The National Museum of Computing | Flickr new icn messageflickr-free-ic3d pan white

Drag to set position!

Kevin Murrell ADMIN November 23, 2008
Thanks to all the guys that are adding pictures to this new group - keep up the good work!

This group discussion is for members only.

Group Description

Pictures taken in The National Museum of Computing at Bletchley Park in the UK

Group Rules

Any pictures of computers or systems taken at the National Museum of Computing can be used by the museum in their publicity material.

Additional Info

  • This group will count toward the photo's limit (60 for Pro members, 30 for free members)
  • Accepted content types: Photos, Videos, Images, Art, Screenshots
  • Accepted safety levels: Safe
Groups Beta
#####EOF##### David & Shiela Glatz | Flickr new icn messageflickr-free-ic3d pan white

Drag to set position!

David & Shiela Glatz

1 3 4 5 6 7 ••• 10 11
#####EOF##### Larung Gar, Tibetan Buddhist city in Sichuan, China | Flickr new icn messageflickr-free-ic3d pan white
Larung Gar, Tibetan Buddhist city in Sichuan, China | by valerian.guillot
Back to photostream

Larung Gar, Tibetan Buddhist city in Sichuan, China

You can read an article about this city here:

www.geo.fr/photos/reportages-geo/le-bouddhisme-tibetain-s...

(French)

And in English : freetibet.org/larung-gar

31,886 views
1,067 faves
114 comments
Taken on October 6, 2015
#####EOF##### Übung Heli Dust | Ein Transporthubschrauber CH-53G startet b… | Flickr new icn messageflickr-free-ic3d pan white
Übung Heli Dust | by Offizieller Auftritt der Bundeswehr
#####EOF##### Introducing your new one-stop, curation station. | Flickr Blog

Introducing your new one-stop, curation station.

+ organizational tool

When you’re in inspiration mode, scrolling through Flickr, soaking in the incredible shots from photographers around the world, and getting lost in the literal billions of eye-popping, jaw-dropping photographs from your communities, it can feel like a burden to open tab after tab of individual photos just to add them to galleries, albums, and groups.

It was time for a reappraisal of sorts. Organizing all the photographs you find inspiring needs to be easy. Really easy. So we built a new way to add all your favorite content to galleries, albums, and groups in one centralized tool from any photo context on Flickr.

All photos on Flickr, wherever you come across them, will now have a new icon with a + that allows you to access a new menu of actions. When you’re looking at photos from other Flickr members, the + will allow you to add that photo to any of your own galleries or if you’re a group admin, invite the photograph’s owner to add that picture to your group. If you’re looking at your own photos, the + will allow you to add your photographs to any of your albums or quickly submit your photo to the groups you are a part of.

+ organizational tool (2)

We’re all about supercharging your Flickr browsing experience and this is just one of many awesome updates we have planned to make organizing and curating your Flickr experience quick and easy.

We’re rolling out the new feature over the next few days, so if you don’t have it yet, hang tight, we’ll release it to you soon.

#####EOF##### epicenter .works | Flickr new icn messageflickr-free-ic3d pan white

Drag to set position!

epicenter .works

1 3 4 5 6 7 ••• 17 18
#####EOF##### The Commons: The Past Is 100% Part of Our Future | Flickr Blog

The Commons: The Past Is 100% Part of Our Future

A Grazing Encounter Between Two Spiral Galaxies

On November 1, 2018, we announced how we’d begin bringing Flickr back to its roots: an active, photo-sharing community. This meant upgrading our Pro accounts and changing Free accounts to encourage photographers to use Flickr again for interaction and inspiration and not just for backup storage. A big part of that inspiration comes from those of you who have shared your photography with Creative Commons licensing. And from historical, governmental, and nonprofit organizations that have shared amazing photos via The Flickr Commons. Those photos, and your ability to share them, are important to us. That hasn’t changed.

Those photos aren’t going anywhere. To understand what does change, though, we first need to understand what The Flickr Commons and Creative Commons are.

Ship Garthsnaid, ca 1920s

The Commons Difference

The Flickr Commons is for photos that come from institutions that want to share their digital collections with as many people around the world as they can. These tend to be historical images whose copyright has expired or government images that are automatically in the public domain since taxpayers have technically already paid for them.

Photos from NASA, The Smithsonian, The National Archives UK, and The British Library, for example, have been shared in The Flickr Commons. As part of The Flickr Commons, all these organizations already were Pro or have received a free Pro account from us, so they have unlimited storage.

The Creative Commons (CC) organization has developed a suite of licenses that give individual photographers or groups great tools for licensing their photography for others to freely use. The photographer keeps their copyright and gives the public an easy way to use their images as long as the license terms are followed.

The Flickr Commons and Creative Commons are different, thus our storage changes affect each differently (or not at all).

The Big Three at Yalta

Are Commons Photos Being Deleted?

No. And once more for good measure: no, Commons photos are not being deleted.

The Flickr Commons photos (those uploaded by the archival, governmental, etc. institutions we are working with) are safe. We are extremely proud of these partnerships. These photos won’t be deleted as a result of any of our announced changes. The only reason they’d disappear is if the organization that uploaded them decided to delete them.

Photos that were Creative Commons licensed before our announcement are also safe. We won’t be deleting anything that was uploaded with a CC license before November 1, 2018. Even if you had more than 1,000 photos or videos with a CC license. However, if you do have more than 1,000 photos or videos uploaded, you’ll be unable to upload additional photos after January 8, 2019, unless you upgrade to a Pro account.

Bottom line: Flickr Commons photos will not be deleted. Anything uploaded with a CC license before November 1, 2018, won’t be deleted, but users will need to upgrade to Pro to upload more than 1,000 photos or videos.

Ice cased Adelie penguins after a blizzard at Cape Denison / photograph by Frank Hurley

What About Non-Profits?

We know and understand that there are groups out there that work hard to scrape together every nickel and dime to run their organization. And we want to help remove any stress that may come from finding a place to host photos. We’ve worked with 501(c)(3) charitable organizations for years at SmugMug to provide them with unlimited, free storage, and we’ll be doing the same at Flickr.

Organizations such as the United Nations Children’s Fund (UNICEF), 350.org, and Second Harvest are already using Flickr to share photos of the amazing work they do. And now we’ll be working with them to ensure Pro isn’t a cost they need to worry about.

In fact, you can fill out the form from this page with information about your 501(c)(3) organization or international charity, and we’ll work with you to get your free Pro account set up.

The Future of the Commons

Freely licensed photos are deeply important to us. After SmugMug acquired Flickr, one of the first meetings we had was with Ryan Merkley, the CEO of Creative Commons. We want to keep that partnership alive and strong, and we are actively working on how to grow it for the future.

“We’ll be working with Flickr to look for ways to continue growing and archiving the commons,” Merkley said. “When Flickr users apply CC licenses to their works, they are inviting everyone to use their works freely and with very few restrictions. That’s an incredible gift to the world, and that generosity should be acknowledged and preserved into perpetuity for everyone to enjoy.”

Whatever changes come in the years going forward, the importance of these photos will always matter to us. We not only want to preserve the photos we have, we want to keep partnering with organizations such as libraries, museums, and government agencies to contribute to The Flickr Commons as well. And we will continue to work hard to keep these photos safe and available for the world to view and enjoy.

Destitute pea pickers in California. Mother of seven children. Age thirty-two. Nipomo, California (LOC)
#####EOF##### Important service updates and dates to remember | Flickr Blog

Important service updates and dates to remember

For the past few months, we’ve been talking about upcoming changes to both Flickr Pro and Flickr Free accounts. There are a couple very important dates approaching quickly that will affect the features of all Flickr accounts. If you want a quick refresher to know why we’re making changes to Flickr Free accounts and exactly what’s changing, check out this blog post.

Important dates

January 8, 2019: Free accounts will be limited to 1,000 photos and videos. Free accounts with more than 1,000 items will no longer be able to upload new photos or videos.

February 5, 2019: Any items over the 1,000-upload limit will be at risk of deletion, starting with the oldest of the items. Photos licensed through Creative Commons before November 1, 2018 will not be deleted, even for accounts over the 1,000 limit.

Upgrading to Flickr Pro

There’s no place like Flickr to share your photos and grow with other photographers. Upgrading to Flickr Pro gives you unlimited storage, exclusive partner discounts (Adobe Creative Cloud, Peak Design gear, and more), increased exposure on Flickr, ad-free browsing, advanced stats, and more.

Cheers to you

We’re extremely proud of what the Flickr community has become. It’s still the largest, most influential group of photographers in the world, and has contributed so much to how photography has grown and changed over the years. That’s one of the reasons we’re keeping a strong partnership with Creative Commons. Since we value accessibility to quality photos, we’ve given nonprofits free Pro accounts and encourage all eligible nonprofits to apply by filling out this form. We’ve also added the ability to gift a Pro account.

2018 has been a big year for Flickr. We’ve carefully listened to your feedback and we’ve already implemented some exciting changes that will make Flickr a better place to grow—like de-spamming and support improvements and plans to improve photo delivery and login experience. We can’t wait to share more updates and new features with you in the new year.

#####EOF##### Reaper UAV Taxis at Kandahar Airfield | A RAF Reaper UAV (Un… | Flickr new icn messageflickr-free-ic3d pan white
Reaper UAV Taxis at Kandahar Airfield | by Defence Images
#####EOF##### And the winners of Your Best Shot 2018 are… | Flickr Blog

And the winners of Your Best Shot 2018 are…

In just one month, over 8,000 amazing photos (!!!) were submitted to the Your Best Shot 2018 group. Through our process, we narrowed it down to five winners, photographers whose photos emanate originality, creativity, and technical skill. We’re pleased to announce the winners of Your Best Shot 2018 and know you’ll be just as impressed as we are.

Drumroll, please!

“Father and daughter” by Dan Perez

Father and daughter

How this moment was captured: “Photograph of my wife and her ailing father in a nursing home in Puerto Rico. I was standing outside the room just watching when I decided to get my camera and snap a few photographs of them together. Unbeknownst to us all, this trip to visit her father in Puerto Rico would be her last. She passed away due to complications from the removal of a brain tumor three months later. This photo truly illustrates the kind of caring person she was. Her father lives on with a broken heart—she will never be forgotten.”

The photographer: Dan Perez is a self-taught, multiple award-winning documentary filmmaker, photographer and overall nice guy. He was raised in NYC and now calls South Florida home. His films have screened at film festivals in 15 different countries and his photography work has been recognized and awarded by the Photographic Society of America and selected in several international photography competitions and exhibitions. Dan specializes in documentary, photojournalism, live music, and travel photography.

Website: http://www.danperezphotography.com

Social:
Flickr: https://www.flickr.com/photos/danperezfilms/
Facebook: https://www.facebook.com/DanPerezFilms
Twitter: https://twitter.com/danperezfilms
Vimeo: https://vimeo.com/danperezfilms
Instagram: https://www.instagram.com/danperezfilms/

“Walking the Line(s)” by Paul Brouns

Walking the Line(s)

How this moment was captured: “Somewhere in Amsterdam, I noticed these horizontal coloured lines near the entrance area of a building. Instantly recognising this to be an ideal subject, I decided to wait for someone to walk by the wall, in order to get an extra point of reference. In the end, a small dog appeared to be just what I needed to match the composition perfectly.”

The photographer: Paul Brouns is an artist and graphic designer, living near Amsterdam in Holland. Rhythm, color, and geometry are recurring themes in his photographic work and architecture has proven to be an ideal subject for this. He’s attracted to abstract, rhythmic expressions of buildings and tries to visualise that as purely as possible. He believes that no matter how the work is made (direct photography or advanced image editing), what counts is the creation of a feast of dancing shadows, sunlit reflections or color combinations that enchant and inspire the viewer.

Social:
Flickr: https://www.flickr.com/photos/brouns/
Facebook: https://www.facebook.com/paulbrouns
Instagram: https://www.instagram.com/paulbrouns/
Twitter: https://twitter.com/paulbrouns
LinkedIn: https://www.linkedin.com/in/paulbrouns/

“Swan Lake” by Volker Woll

Swan Lake

How this moment was captured: “‘The swan in South Tyrol, Italy’ [‘Swan Lake’] is one of my favorite images because it started out as a fail. Originally, I wanted to photograph a different location, but learned the day before that the road was closed and I couldn’t get there. So I spent the rest of the day scouting the area and finally found this lake called Lago di Dobbiaco that seemed to have potential for a sunrise shoot the next day. This morning, all the pieces fell into place for me: the low hanging clouds, the bit of color from the rising sun, the mist over the lake and the reflection on the calm water…Believe me when I say, I had to talk that swan into posing for me…Thanks again, Swan. It’s these (rare) moments that make up for all the other more common moments when the pieces did not fall into place.”

The photographer: When he’s not out travelling and taking photos (which is the majority of the time) Volker Woll is living in southern Germany working on software. Funny enough, he met other IT people on those many sunrise shoots (like in “Swan Lake”), so he thinks that landscape photography and software development are just two different shades of nerdy.

Social:
Flickr: https://www.flickr.com/photos/69361287@N04/
Instagram: https://www.instagram.com/chickenandricetales/

“Lonely alleys of Venice” by ines_maria

...lonelyalleysofvenice...

How this moment was captured: “I arrived by train to Venice in the very early morning—it was freezing cold. I strolled through the streets, the lights were still on in some homes and businesses. After turning into a side alley, peace and an eerie silence spread—it was just the kind of moment I always hope for: in this case, the feeling of loneliness, the dark abandoned silence. Suddenly, quietly, and slowly, these men appeared and disappeared. I knew this was the story I’d been longing to capture.”

The photographer: Ines Maria lives in Vienna and works as an art director at an advertising agency. As a self-taught photographer, her love and passion, as you can imagine, is photography. She believes humans contrasted with our artificial environment (streets and architecture) is a beautiful expression of photography.

Social:
500px: https://500px.com/ines_maria

“Natasza” by Krzysiek Śliwaq

Natasza

How this moment was captured: “Natasza’s portrait is an example of one of my visions that I have somewhere inside—a simple, classic, close portrait with a bunch of natural emotions enriched by my own patterns of post-processing. Here, I used a dark mood and black and white tones to enhance the perception of her beautiful face, big eyes, and cute freckles. Ambient light made natural and delicate reflections in her eyes and mild skin facture. I tried to catch natural hands setting in the frame as well to make the portrait complete.”

The photographer: Krzysiek Śliwaq was born in 1984 in Poland. He is a solution designer and an enterprise architect in the IT sector working for an international company. He’s a happy husband and a fulfilled father of two remarkable children, who in his free time, takes portraits of young people and sometimes conducts original portrait photography master classes. In his pictures, he’s looking for the real and non-obvious emotions and mood. Krzysiek believes his works are largely a fusion of classic portrait, fashion portrait and fine-art combined with the real charm and authenticity of a child, and with a pinch of dark and intense mood. He enjoys dealing with the two extremes—rawness, naturalness in the message and widely considered in a portrait photography—fine-art. The 80s and 90s, when he was growing up, certainly had a huge impact on his art perception, and he still considers himself to be a big fan of music and cinematography from those times.

Social:
Facebook: https://www.facebook.com/plumsphotography
Instagram: https://www.instagram.com/the_man_with_a_hip/

We’re looking forward to a year filled with adventure and growth in the Flickr community, and we can’t wait to see your best shots of 2019.

Cheers,
The Flickr Team

#####EOF##### Flickr Blog | Page 2

We Can’t Stand Spam Either

We’ve been fighting spam for some time now. And thanks to our recent acquisition by SmugMug, we have new resources that are helping us take stronger action and make significant progress on this front.

#####EOF##### Reeds and Islands | Prints avaliables on my NEW WEB WWW.DAVI… | Flickr new icn messageflickr-free-ic3d pan white
Reeds and Islands | by DavidFrutos
Back to photostream

Reeds and Islands

Prints avaliables on my NEW WEB WWW.DAVIDFRUTOS.NET

 

Press "L"

 

Member of FONAMUR (Fotógrafos de Naturaleza de Murcia).

 

You can follow my work on [ND Magazine] [500px] [Art Limited] [Google+] [Twitter] [Instagram] [Facebook]

 

Tomada en Los Urrutias, Cartagena (Murcia)- España.

 

Canon EOS 5D Mark II

122"

f11

ISO 100

Canon 17-40mm @ 35mm

LEE Big Stopper

Singh-Ray GND 0.9

Tripod Giottos MT9271 + Ball Head MH 1300 + Remote control.

 

Silver Efex Pro 2

8,019 views
164 faves
56 comments
Taken on October 22, 2016
#####EOF##### Rubber Duck USB Drive III | Tada! | Sharon G. | Flickr new icn messageflickr-free-ic3d pan white
Rubber Duck USB Drive III | by Sharon G.
Back to photostream

Rubber Duck USB Drive III

Tada!

549 views
0 faves
3 comments
Taken on June 13, 2009
#####EOF##### Important service updates and dates to remember | Flickr Blog

Important service updates and dates to remember

For the past few months, we’ve been talking about upcoming changes to both Flickr Pro and Flickr Free accounts. There are a couple very important dates approaching quickly that will affect the features of all Flickr accounts. If you want a quick refresher to know why we’re making changes to Flickr Free accounts and exactly what’s changing, check out this blog post.

Important dates

January 8, 2019: Free accounts will be limited to 1,000 photos and videos. Free accounts with more than 1,000 items will no longer be able to upload new photos or videos.

February 5, 2019: Any items over the 1,000-upload limit will be at risk of deletion, starting with the oldest of the items. Photos licensed through Creative Commons before November 1, 2018 will not be deleted, even for accounts over the 1,000 limit.

Upgrading to Flickr Pro

There’s no place like Flickr to share your photos and grow with other photographers. Upgrading to Flickr Pro gives you unlimited storage, exclusive partner discounts (Adobe Creative Cloud, Peak Design gear, and more), increased exposure on Flickr, ad-free browsing, advanced stats, and more.

Cheers to you

We’re extremely proud of what the Flickr community has become. It’s still the largest, most influential group of photographers in the world, and has contributed so much to how photography has grown and changed over the years. That’s one of the reasons we’re keeping a strong partnership with Creative Commons. Since we value accessibility to quality photos, we’ve given nonprofits free Pro accounts and encourage all eligible nonprofits to apply by filling out this form. We’ve also added the ability to gift a Pro account.

2018 has been a big year for Flickr. We’ve carefully listened to your feedback and we’ve already implemented some exciting changes that will make Flickr a better place to grow—like de-spamming and support improvements and plans to improve photo delivery and login experience. We can’t wait to share more updates and new features with you in the new year.

#####EOF##### We’re ready for more. Submit to Your Best Shot 2018 now. | Flickr Blog

We’re ready for more. Submit to Your Best Shot 2018 now.

Haven’t submitted yet?

Your Best Shot 2018 is in full swing: we’ve already received thousands of stunning submissions—photos that made you smile, cry, and grow. Check them out here. Haven’t submitted yet? You still have plenty of time to join in on the celebration: submit your single best shot of 2018 by January 7, 2019. Five winners will each receive a Peak Design Everyday Backpack, a SmugMug Pro subscription, and lots of exposure on Flickr social media channels. Keep in mind, the sooner you submit to the Group, the more exposure your photos will get.

Your Best Shot 2018 - Prizes

Have questions about how we’re celebrating with your photos? Visit our FAQs page in the Your Best Shot 2018 Group and read the contest rules before submitting.

We are highlighting some of our favorite shots from the group across various themes, and these are some of the best Wildlife and Portrait photos posted so far.

Cheers!
The Flickr Team

#####EOF##### Ankunft NH-90 in Mali | Die ersten Mehrzweckhubschrauber vom… | Flickr new icn messageflickr-free-ic3d pan white
Ankunft NH-90 in Mali | by Offizieller Auftritt der Bundeswehr
#####EOF##### Flickr expos sur Flickr
← préc 1 2 3 4 5 6 7 ... 56
(668 expos)

Besoin d’inspiration ? Explorez des galeries. Ou bien consultez la FAQ sur les expos.

Souscrire à un fil d'infos sur cette page… Fil : s’abonner aux expos de Flickr
#####EOF##### Top 25 Photos on Flickr in 2018 From Around The World | Flickr Blog

Top 25 Photos on Flickr in 2018 From Around The World

From the billions of photos uploaded to Flickr in 2018, we chose the Top 25 Flickr Photos of 2018. Of all the incredible moments captured, we’ve curated a list of the most inspiring photos, which represent a global community of unique perspectives.

To determine top photos, Flickr staff created an algorithm that took into account a number of social and engagement metrics, like how many times the photo was viewed or faved. We made sure to curate the raw data to avoid the results being a popularity contest; we removed spammers and photos that don’t qualify as high-quality. We also tried to ensure diversity of genre. For photographers whose photos placed in the top list multiple times, we selected their top-scoring photo.

We’re proud to present the Top 25 photos of 2018, whose diverse and talented photographers represent 12 different countries around the world.


Top 25 Photos of 2018

Magic

Magic by Koen Jacobs (Belgium) with a Canon EOS 5D Mark III

Blue and Gold

Blue and Gold by Dylan Toh (Australia) with a Canon EOS 5D Mark IV

Parent and Child

Parent and Child by Patricia Ware (USA) with a Canon EOS-1D X Mark II

Arches Within Arches

Arches Within Arches by Wayne Pinkston (USA) with a Nikon D810A

Burrowing Owl Juvenile - Salton Sea

Burrowing Owl Juvenile – Salton Sea by Dave Zimmerman (Canada) with a Canon EOS 5D Mark III

Ala-Archa Kyrgyzstan Inferno

Ala-Archa Kyrgyzstan Inferno by Albert Dros (The Netherlands) with a Sony ILCE-7RM3

Niagara Falls in winter

Niagara Falls in winter by Marc McDermott (Canada) with a Canon EOS 7D Mark II

Rainy infinite mind

Rainy infinite mind by Frank Waterkotte (Germany) with a Nikon D800

Bruine beer / Brown bear / Ours brun

Bruine beer / Brown bear / Ours brun by Gladys Klip (The Netherlands) with a Canon EOS 5D Mark IV

Wintertime Happiness

Wintertime Happiness by Alicja Zmysłowska (Poland) with a Canon EOS 5D Mark III

Vestrahorn Islande

Vestrahorn Islande by RUFF Etienne (France) with a Nikon D750

Peace Amid Chaos

Peace Amid Chaos by Peter Stewart (UK/Hong Kong) with a Ricoh GR

Eye to Eye

Eye to Eye by Salah Baazizi (USA) with a Canon 7D2

breathe

breathe by Paul (UK) with a Nikon D810

Falcon Heavy Demo Mission

Falcon Heavy Demo Mission by SpaceX (USA) with a Canon EOS 50D

Emotions in Camargue

Emotions in Camargue by Alberto Ghizzi Panizza (Italy) with a Nikon D850

A magical dawn

A magical dawn by images@twiston (UK) with a Nikon D800

Comfortably Dumb (EXPLORE)

Comfortably Dumb (EXPLORE) by SkyeWeasel (UK) with a Canon EOS 6D

Crazy Sky

Crazy Sky by Carlos F. Turienzo (Spain)

Underwater Lighting

Underwater Lighting by Tony Sellen (UK) with a Nikon D810

Milford Sound Dramatic Clouds

Milford Sound Dramatic Clouds by Jimmy McIntyre (UK) with a Nikon D800

What's a Mother to do?  0268

What’s a Mother to do? by Daniel D’Auria (USA) with a Canon EOS-1D X

"Dramatic sunrise"     Cadini di Misurina - Dolomites

Dramatic sunrise Cadini di Misurina – Dolomites by W.I.L.D. Giorgio (Giorgio Collatina) (Italy) with a Canon EOS 5D Mark IV

The Congregation

The Congregation by Aaron Reed (USA) with a Canon EOS 5DS R

Winter wonder | Best of 2018 top 25 | Thank you all!

Winter wonder by András Pásztor (Hungary) with a Nikon D5100

Thank you for sharing your most inspiring shots of 2018 with the FlickrFam. We’re endlessly inspired by you, the largest, most influential community of photographers in the world. Here’s to 2019! We’re excited to see all your photos to come in this new year.

Join the conversation with #YIR2018.

#####EOF##### Flickr Blog

Twitter Tuesday:親切 Be Kind

本周 #TwitterTuesday 的主題是「親切」#BeKind,請透過 Twitter 將你的最佳作品分享給我們的官方帳號 @Flickr,我們會在近日在 Flickr blog 刊出佳作。

Twitter Tuesday 佳作選集:鎖 Locks

上周雖然華人社會都在過農曆新年,#TwitterTuesday 還是有發出全球徵圖主題活動,這次的主題是配合全球網路安全日的「鎖」#Locks。讓我們來看看大家分享的佳作吧!

2015你的最佳一拍 精選主題作品:微笑

去年年底舉辦的「2015你的最佳一拍」活動,大家分享了許多精彩作品。我們從所有來稿作品中依不同主題選出許多精彩作品,這次的主題是「微笑」。

2015你的最佳一拍 精選主題作品:放輕鬆

去年年底舉辦的「2015你的最佳一拍」活動,大家分享了許多精彩作品。我們從所有來稿作品中依不同主題選出許多精彩作品,這次的主題是「放輕鬆」。

2015你的最佳一拍 精選主題作品:奇幻故事

去年年底舉辦的「2015你的最佳一拍」活動,大家分享了許多精彩作品。我們從所有來稿作品中依不同主題選出許多精彩作品,這次的主題是「奇幻故事」。

2015你的最佳一拍 精選主題作品:長曝

去年年底舉辦的「2015你的最佳一拍」活動,大家分享了許多精彩作品。我們從所有來稿作品中依不同主題選出許多精彩作品,這次的主題是「長曝」。

2015你的最佳一拍 精選主題作品:對稱

去年年底舉辦的「2015你的最佳一拍」活動,大家分享了許多精彩作品。我們從所有來稿作品中依不同主題選出許多精彩作品,這次的主題是「對稱」。

2015你的最佳一拍精選主題作品:人像

去年年底舉辦的「2015你的最佳一拍」活動,大家分享了許多精彩作品。我們從所有來稿作品中依不同主題選出許多精彩作品,這次的主題是「人像」。

2015你的最佳一拍精選主題作品:散景

去年年底舉辦的「2015你的最佳一拍」活動,大家分享了許多精彩作品。我們從所有來稿作品中依不同主題選出許多精彩作品,這次的主題是「散景」。

#####EOF##### Top 25 Photos on Flickr in 2018 From Around The World | Flickr Blog

Top 25 Photos on Flickr in 2018 From Around The World

From the billions of photos uploaded to Flickr in 2018, we chose the Top 25 Flickr Photos of 2018. Of all the incredible moments captured, we’ve curated a list of the most inspiring photos, which represent a global community of unique perspectives.

To determine top photos, Flickr staff created an algorithm that took into account a number of social and engagement metrics, like how many times the photo was viewed or faved. We made sure to curate the raw data to avoid the results being a popularity contest; we removed spammers and photos that don’t qualify as high-quality. We also tried to ensure diversity of genre. For photographers whose photos placed in the top list multiple times, we selected their top-scoring photo.

We’re proud to present the Top 25 photos of 2018, whose diverse and talented photographers represent 12 different countries around the world.


Top 25 Photos of 2018

Magic

Magic by Koen Jacobs (Belgium) with a Canon EOS 5D Mark III

Blue and Gold

Blue and Gold by Dylan Toh (Australia) with a Canon EOS 5D Mark IV

Parent and Child

Parent and Child by Patricia Ware (USA) with a Canon EOS-1D X Mark II

Arches Within Arches

Arches Within Arches by Wayne Pinkston (USA) with a Nikon D810A

Burrowing Owl Juvenile - Salton Sea

Burrowing Owl Juvenile – Salton Sea by Dave Zimmerman (Canada) with a Canon EOS 5D Mark III

Ala-Archa Kyrgyzstan Inferno

Ala-Archa Kyrgyzstan Inferno by Albert Dros (The Netherlands) with a Sony ILCE-7RM3

Niagara Falls in winter

Niagara Falls in winter by Marc McDermott (Canada) with a Canon EOS 7D Mark II

Rainy infinite mind

Rainy infinite mind by Frank Waterkotte (Germany) with a Nikon D800

Bruine beer / Brown bear / Ours brun

Bruine beer / Brown bear / Ours brun by Gladys Klip (The Netherlands) with a Canon EOS 5D Mark IV

Wintertime Happiness

Wintertime Happiness by Alicja Zmysłowska (Poland) with a Canon EOS 5D Mark III

Vestrahorn Islande

Vestrahorn Islande by RUFF Etienne (France) with a Nikon D750

Peace Amid Chaos

Peace Amid Chaos by Peter Stewart (UK/Hong Kong) with a Ricoh GR

Eye to Eye

Eye to Eye by Salah Baazizi (USA) with a Canon 7D2

breathe

breathe by Paul (UK) with a Nikon D810

Falcon Heavy Demo Mission

Falcon Heavy Demo Mission by SpaceX (USA) with a Canon EOS 50D

Emotions in Camargue

Emotions in Camargue by Alberto Ghizzi Panizza (Italy) with a Nikon D850

A magical dawn

A magical dawn by images@twiston (UK) with a Nikon D800

Comfortably Dumb (EXPLORE)

Comfortably Dumb (EXPLORE) by SkyeWeasel (UK) with a Canon EOS 6D

Crazy Sky

Crazy Sky by Carlos F. Turienzo (Spain)

Underwater Lighting

Underwater Lighting by Tony Sellen (UK) with a Nikon D810

Milford Sound Dramatic Clouds

Milford Sound Dramatic Clouds by Jimmy McIntyre (UK) with a Nikon D800

What's a Mother to do?  0268

What’s a Mother to do? by Daniel D’Auria (USA) with a Canon EOS-1D X

"Dramatic sunrise"     Cadini di Misurina - Dolomites

Dramatic sunrise Cadini di Misurina – Dolomites by W.I.L.D. Giorgio (Giorgio Collatina) (Italy) with a Canon EOS 5D Mark IV

The Congregation

The Congregation by Aaron Reed (USA) with a Canon EOS 5DS R

Winter wonder | Best of 2018 top 25 | Thank you all!

Winter wonder by András Pásztor (Hungary) with a Nikon D5100

Thank you for sharing your most inspiring shots of 2018 with the FlickrFam. We’re endlessly inspired by you, the largest, most influential community of photographers in the world. Here’s to 2019! We’re excited to see all your photos to come in this new year.

Join the conversation with #YIR2018.

#####EOF##### tw20140520-029 | BERLIN 20MAY14 - Internationale Luftfahrtsc… | Flickr new icn messageflickr-free-ic3d pan white
tw20140520-029 | by thomas_wiegold
#####EOF##### . | Autorretratos en la Otredad | Andres Marti | Flickr new icn messageflickr-free-ic3d pan white

Adult Content

You must be signed in to see this content. Sign in

Back to photostream

.

Autorretratos en la Otredad

34,299 views
169 faves
28 comments
Taken on February 27, 2014
#####EOF#####